Tech Racho エンジニアの「?」を「!」に。
  • 開発

FactoryGirlでHasManyな関連モデルも同時に生成する

注: 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)

CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。