LoginSignup
2
2

More than 5 years have passed since last update.

一対一だったのに、一対多に修正があってspecが真っ赤…な時に

Posted at

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 で代用。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2