Comme décrit dans cet article J'utilise des associations automatiques dans les montages. Par exemple, si un objet région a un id de pays, au lieu de faire "country_id" : 1, je fais "country" : "USA". "USA" est un label dans mon fichier countries.yml, donc les fixtures savent comment s'en occuper. Cependant, cela ne fonctionne que lorsque vous ne spécifiez pas de valeur d'ID pour l'objet countries. Je ne peux donc pas attribuer la valeur 1 à l'ID des États-Unis. Mais si je ne lui attribue pas la valeur 1, il finit par être une grande valeur 8974343... ce qui est assez étrange. Existe-t-il un moyen de faire en sorte que les appareils génèrent automatiquement des identifiants qui ne soient pas trop élevés ? .... ou est-ce que cela est acceptable ?
Réponses
Trop de publicités?
crazycrv
Points
161
En lisant la documentation de l'API, on constate que c'est exactement comme ça que les appareils générés automatiquement sont censés se comporter. Si vous voulez avoir une valeur d'identification spécifique pour un appareil à l'avance, vous devriez probablement l'attribuer vous-même.
Sinon, consultez les documents de l'API :
The generated ID for a given label is constant, so we can discover any fixture‘s ID without loading anything, as long as we know the label.
Edo
Points
38
Utilisateur non enregistré
Points
0
grosser
Points
4300
Test automatisé pour assurer l'intégrité des montages
class FixtureIntegrityTest < ActiveSupport::TestCase
context "fixture integrity" do
should "work" do
fixtures = Dir["test/fixtures/*.yml"].map do |file|
[file, File.basename(file).sub(/\..*/, "").singularize, YAML.load(ERB.new(File.read(file)).result)]
end
failures = fixtures.reject(&:last).map { |file,*| "#{file} is empty!"}
failures = failures.presence || fixtures.map do |_, klass, content|
content.select{ |_,fixture| fixture["id"] }.map do |name, _|
fixtures.map do |file, _, content|
content.select { |_,fixture| fixture[klass] == name }.map do |_, fixture|
"#{file} uses #{klass}: #{name}, but should use the id!"
end
end
end
end.flatten.compact
assert_equal [], failures
end
end
end