Як використовувати factory_girl для створення батьківської моделі в дочірньому

Це налаштування:

  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 '[email protected]'
    a.password 'please'
  end

Агенція has_many Agents та агентство повинні бути присутніми. Як вирішити це куряче-яйце? Я хочу зробити Factory (: agent), але це викликатиме Factory (: agency), яке потім спробує побудувати інший агент.

1
@apneadiving Логіка бізнесу така, що агентство не діє без агента, але для заводів я, звичайно, можу це зробити. Якщо не прийде кращого рішення, я візьму це.
додано Автор Gavin, джерело
@apneadiving По-друге, я не думаю, що буде працювати. Агентство підтверджує наявність одного набору agent_attributes.
додано Автор Gavin, джерело
чому б ви не створили відхилення фабрики agency , яка не створює агент .
додано Автор apneadiving, джерело
Перечитуючи ваше запитання, я не бачу реальної проблеми. Ви можете легко визначити асоційовані об'єкти. Подивіться тут: додано Автор apneadiving, джерело
Ви помітили, що епізод дівчини-фабрики був оновлений в Railscasts?
додано Автор apneadiving, джерело

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 '[email protected]'
    a.password 'please'
    a.after_create { |a| FactoryGirl.create(:agency, agent_ids: [a.id], agents_attributes: {}) }
  end
1
додано