#ruby-on-rails #factory-bot
#ruby-on-rails #factory-бот
Вопрос:
У меня есть такая настройка:
factory :agency do |a|
a.agents_attributes { [FactoryGirl.attributes_for(:agent)] }
a.subdomain 'clear'
a.name 'ClearProperty'
end
factory :agent do |a|
agency
a.email 'user@test.com'
a.password 'please'
end
У агентства есть множество агентов, и агентство должно присутствовать. Как разрешить эту проблему с куриным яйцом? Я хочу сделать Factory(:agent), но это вызовет Factory(:agency), который затем попытается создать другой агент.
Комментарии:
1. почему бы вам не создать склонение вашей
agency
фабрики, которое не создало бы ничегоagent
.2. @apneadiving Логика бизнеса такова, что агентство недействительно без агента, но для фабрик я, безусловно, мог бы это сделать. Если не появится лучшего решения, я приму его.
3. @apneadiving Если подумать, я не думаю, что это сработает. Агентство проверяет наличие одного набора атрибутов agent_attributes.
4. перечитывая ваш вопрос, я не вижу никакой реальной проблемы. Вы можете легко определять связанные объекты. Посмотрите здесь: robots.thoughtbot.com/post/254496652/aint-no-calla-back-girl . Таким образом, вы могли бы просто передать созданный агент агентству.
5. вы заметили, что эпизод factory girl был обновлен в Railscasts?
Ответ №1:
Вот что я придумал:
factory :agency do |a|
a.agents_attributes { [FactoryGirl.attributes_for(:agent)] }
a.subdomain 'clear'
a.name 'ClearProperty'
end
factory :agent do |a|
a.email 'user@test.com'
a.password 'please'
a.after_create { |a| FactoryGirl.create(:agency, agent_ids: [a.id], agents_attributes: {}) }
end