http://blog.thefrontiergroup.com.au/2014/12/using-factorygirl-easily-create-complex-data-sets-rails/
こちらを発見し嬉しかった。
transient
を使うと一時的な引数を作れるので、これに指定をすれば、あとはafter(:create)
などでうまいことできるということだ。ほー。
FactoryGirl.define do
factory :book do
transient do
read_by nil
wishlisted_by nil
# nil is a sensible default, we don't want our factories creating
# extra data unnecessarily. It slows your test suite down
end
after(:create) do |book, factory|
if factory.read_by
FactoryGirl.create(:user_read_book, book: book, user: factory.read_by)
end
if factory.wishlisted_by
FactoryGirl.create(:wishlist_book, book: book, user: factory.wishlisted_by)
end
end
end
end
自分のところは transient
が通らなくて ignore
で代用。