Sto cercando di capire come scrivere una factory che appartiene a 2 modelli diversi, ognuno dei quali dovrebbe avere lo stesso modello padre. Ecco il codice di esempio artificiosa:Associazione FactoryGirl con più modelli
class User < ActiveRecord::Base
has_many :widgets
has_many :suppliers
attr_accessible :username
end
class Widget < ActiveRecord::Base
belongs_to :user
has_many :parts
attr_accessible :name
end
class Supplier < ActiveRecord::Base
belongs_to :user
has_many :parts
attr_accessible :name
end
class Part < ActiveRecord::Base
belongs_to :supplier
belongs_to :widget
attr_accessible :name
end
Ecco quello che ho finora:
factory :user do
name 'foo'
end
factory :widget do
association :user
name 'widget'
end
factory :supplier do
association :user
name 'supplier'
end
factory :part do
association :widget
association :supplier
name 'part'
end
Il problema di questo è che il part.widget.user != part.supplier.user
e devono essere gli stessi.
Ho provato la seguente senza successo:
factory :part do
association :widget
association :supplier, user: widget.user
name 'part'
end
Qualche suggerimento? O devo modificarlo dopo aver creato la parte?
Grazie
Grazie mille. Ho finito per usare 'after (: build)' e 'part.widget.user = part.supplier.user' in questo modo non sto creando 3 utenti :) –
Oh fantastico che ha funzionato! Non ero abbastanza sicuro che lo sarebbe. Mi sembra comunque che ci debba essere un modo più pulito per farlo. –
Questo è quello che ho pensato anch'io, ma 'associazione: fornitore, utente: widget.user' non funziona potrebbe essere qualcosa da cercare per una patch –