注: factory_girlはfactory_botに改名されました。
下のようなBookとPageというモデルがあったとして、Bookを作成する際にPageも一緒に作りたいという場合。
環境
class Book < ActiveRecord::Base
has_many :pages
accepts_nested_attributes_for :pages
validates :pages, length: { minimum: 1 }
end
class Page < ActiveRecord::Base
belongs_to :book
validates :book, presence: true
end
FactoryGirlではこう書ける
FactoryGirl.define do
factory :book do
title "タイトル"
after(:build) do |book|
book.pages << build(:page, book: book)
end
end
end
これでBookを作成した時に配下のPageもひとつつくられる
FactoryGirl.create(:page)