Mam model użytkownika należący do grupy. Grupa musi mieć unikalny atrybut nazwy. Fabryka fabryki i grupy użytkowników jest zdefiniowana jako:Znajdź lub utwórz rekord przez stowarzyszenie factory_girl
Factory.define :user do |f|
f.association :group, :factory => :group
# ...
end
Factory.define :group do |f|
f.name "default"
end
Po utworzeniu pierwszego użytkownika tworzona jest również nowa grupa. Kiedy próbuję utworzyć drugiego użytkownika, to się nie uda, ponieważ chce ponownie utworzyć tę samą grupę.
Czy istnieje sposób na wskazanie metody powiązania factory_girl, aby najpierw sprawdzić istniejący rekord?
Uwaga: Próbowałem zdefiniować metodę radzenia sobie z tym, ale nie mogę użyć f.association. Chciałbym, aby móc używać go w scenariuszach ogórka tak:
Given the following user exists:
| Email | Group |
| [email protected] | Name: mygroup |
a to może działać tylko wtedy, gdy stowarzyszenie jest stosowany w definicji fabryki.
Działa bardzo dobrze, dzięki. W Railsach 4 preferowanym sposobem byłoby: 'Group.find_or_create_by (name: name)' – migu
Preferowanym sposobem w Railsach 4 byłaby w rzeczywistości 'Group.where (name: name) .first_or_create'. – Laurens
To prawdopodobnie powinna być akceptowana odpowiedź. Drive-by-ers ... oto twoje rozwiązanie. – ocodo