0
Factory.define(:player) do |u|
    u.association(:owner), :factory => :user
    u.association(:updater), :factory => user
end

上記の定義を書き直して、所有者とアップデーターの値を、createを呼び出すときに明示的に渡さずに同じになるように初期化できますか?

4

2 に答える 2

1
Factory.define(:player) do |uu|
  uu.association(:owner), :factory => :user
  uu.association(:updater), { |player| player.owner }
end
于 2012-05-16T19:40:37.310 に答える
0

after_createアソシエーションを定義するときは、またはafter_buildフックのいずれかを使用する方が簡単であることがよくあります。

Factory.define(:player) do |u|

  after_build do |player|
    user = FactoryGirl.create :user
    player.owner = user
    player.creator = user
  end

end

私は通常、ファクトリをセットアップして、ビルド (インスタンス化) または作成 (インスタンス化と保存) に関係なく機能するようにしますが、ActiveRecord は、ビルドするだけのときに関連付けをセットアップする方法に少し注意が必要です。この例では create を使用しました。

于 2012-05-16T19:54:44.243 に答える