私は次のモデルを持っています:
class Team < ActiveRecord::Base
# Setup accessible (or protected) attributes for your model
attr_accessible :name
validates_presence_of :name
belongs_to :user
end
これは次の方法でテストされます:
describe Team do
before(:each) do
@attr = FactoryGirl.attributes_for(:team)
end
it "should belong to a user" do
@team = Team.create!(@attr)
@team.should belong_to(:user)
end
end
そして、私は次の工場を持っています:
FactoryGirl.define do
factory :team do
name 'Dream Team'
sport
user
end
end
FactoryGirl.define do
factory :user do
name 'Test User'
last_name 'Last Name'
email 'example@example.com'
password 'changeme'
password_confirmation 'changeme'
end
end
仕様をテストすると、次のエラーが発生します。
1) チームはユーザーに属している必要があります 失敗/エラー: @team = Team.create!(@attr) ActiveRecord::StatementInvalid: SQLite3::ConstraintException: team.user_id may not be NULL: INSERT INTO "teams" ("created_at" , "name", "sport_id", "updated_at", "user_id") 値 (?, ?, ?, ?, ?)
何故ですか?ドキュメントでは、関連付けを設定するには、ファクトリー名を書くだけでよいと書かれています。私の場合はユーザーです。
ありがとう