Factory.define(:player) do |u|
u.association(:owner), :factory => :user
u.association(:updater), :factory => user
end
上記の定義を書き直して、所有者とアップデーターの値を、createを呼び出すときに明示的に渡さずに同じになるように初期化できますか?
Factory.define(:player) do |u|
u.association(:owner), :factory => :user
u.association(:updater), :factory => user
end
上記の定義を書き直して、所有者とアップデーターの値を、createを呼び出すときに明示的に渡さずに同じになるように初期化できますか?
Factory.define(:player) do |uu|
uu.association(:owner), :factory => :user
uu.association(:updater), { |player| player.owner }
end
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 を使用しました。