Y a-t-il un moyen dans factory_girl
de spécifier une instance aléatoire vers laquelle une association doit pointer? Par exemple, j'ai un objet Like
qui belongs_to
un User
et un SocialUnit
. Je veux l'usine pour Like
pour choisir un User
aléatoire aléatoire et un SocialUnit
au hasard, au lieu de simplement en générer un nouveau. L'extrait ci-dessous fonctionne en quelque sorte:Spécification d'un objet d'association aléatoire dans la définition factory_girl
Factory.define :like do |f|
if User.all.count > 0
f.user User.all.sort_by{ rand }.first
else
f.association :user
end
end
Il prend en effet un utilisateur au hasard, mais il semble que l'utilisateur aléatoire n'est ramassé une fois, parce que l'exécution de ce
def create_hauls
5.times do |i|
Factory(:haul)
end
end
crée un tas de gens tout avec le même utilisateur. Je suppose que cela a du sens ... l'usine est définie une fois, puis réutilisée plusieurs fois.
Je pourrais utiliser une séquence pour forcer l'aléatoire; existe-t-il un moyen de le définir dans la définition d'usine, ou la séquence est-elle la meilleure façon de le faire?
Merci.
ah, merci. j'avais implémenté une solution avec une séquence (en remplaçant 'if User.all.count> 0' dans mon extrait avec' Factory.next (: random_user) ', mais en y repensant, c'était faux car il allait encore vérifier si' User.all.count> 0' qu'une seule fois. Merci pour l'aide! – unsorted