Tengo un modelo de usuario que pertenece a un grupo. El grupo debe tener un atributo de nombre único. Fábrica de usuario y fábrica de grupo se definen como:Buscar o crear registro a través de la asociación factory_girl
Factory.define :user do |f|
f.association :group, :factory => :group
# ...
end
Factory.define :group do |f|
f.name "default"
end
Cuando se crea el primer usuario, también se crea un nuevo grupo. Cuando trato de crear un segundo usuario, falla porque quiere crear el mismo grupo nuevamente.
¿Hay alguna manera de decirle al método de asociación factory_girl que busque primero un registro existente?
Nota: Intenté definir un método para manejar esto, pero luego no puedo usar f.association. Me gustaría ser capaz de utilizarlo en escenarios de pepino así:
Given the following user exists:
| Email | Group |
| [email protected] | Name: mygroup |
y esto sólo puede funcionar si la asociación se utiliza en la definición de fábrica.
Funciona muy bien, gracias. En Rails 4, la forma preferida sería: 'Group.find_or_create_by (name: name)' – migu
La forma preferida en Rails 4 sería en realidad 'Group.where (name: name) .first_or_create'. – Laurens
Probablemente esta sea la respuesta aceptada. Drive-by-ers ... aquí está su solución. – ocodo