外部キーにvalidates_presence_of検証をつけた関連モデルのフィクスチャーを定義する

外部キーにnil禁止検証を設けたらすべてのspecが落ちた。その時の備忘録。

環境

factory_girl 3.4.0
Rails 3.2.3
ruby 1.9.3p194

specが落ちた原因

FactoryGirlのフィクスチャー定義で、子の外部キーがnilで生成されていたため検証に引っかかっていた。

修正後

FactoryGirl.define do
  factory :category do
    sequence(:name) { |n| "カテゴリー名#{n}"}
    sequence(:bio) { |n| "カテゴリーの詳細です#{n}"}
     do |cate|
      cate.posts= [FactoryGirl.create(:post, :category_id => cate.id)]
    end 
  end 
end

after_createを使っているため、postインスタンスの外部キー(category_id)にはnilが入らない。
おかげで検証に引っかからなった。

参考:http://eblog.drecom.jp/entry/14