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エージェントと代理店が存在する必要があります。この鶏卵を解決するには?私は工場(:代理店)をしたいが、これは工場(:代理店)に電話をかけ、別の代理店の建設を試みる。

1
@apneadivingビジネスロジックは、代理店が代理店なしでは有効ではないようなものですが、工場ではそれを確かに行うことができます。より良い解決策が到着しなければ、それは私が取るでしょう。
追加された 著者 Gavin,
@apneadiving第二の考えでは、私はそれがうまくいくとは思わない。エージェンシーは、1組のagent_attributesの存在を検証します。
追加された 著者 Gavin,
代理店ファクトリを作成しないでください。これは agent を作成しません。
追加された 著者 apneadiving,
あなたの質問を読んで、私は本当の問題を見ることはできません。関連するオブジェクトを簡単に定義することができます。こちらをご覧ください: robots.thoughtbot.com/post/254496652/aint-no-calla-back-girl です。だから、作成した代理店を代理店に単に渡すことができます。
追加された 著者 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
追加された