2012-03-21 10 views
1

私はユーザー教師モデルです。教師belongs_toユーザーとユーザーhas_one先生。私は私の仕様で教師を作成しようとするとRails 3 - 工場の女の子の宝石 - belongs_toとhas_oneの関係

Factory.define :user do |user| 
    user.user_login "Another User" 
    user.user_role "admin" 
    user.password "foobar" 
end 

Factory.sequence :user_login do |n| 
    "person-#{n}" 
end 

Factory.define :teacher do |teacher| 
    teacher.teacher_last_name 'Last' 
    teacher.teacher_first_name 'First' 
    teacher.teacher_middle_name 'Middle' 
    teacher.teacher_birthday '01.11.1980' 
    teacher.teacher_category 'First category' 
    teacher.teacher_sex   'm' 
end 

:また、私は工場の女の子のファイル内のコードを持っている

@teacher = Factory(:teacher) 

その後、私はエラーを受け取る:私として

Failure/Error: @teacher = Factory(:teacher) 
    ActiveRecord::RecordInvalid: 
     Validation failed: User can't be blank 

私は教師がbelongs_toユーザーであることを工場に伝えていないので、それが起こることを理解する。どうすれば修正できますか?

答えて

6

あなたは関連付けを定義する必要があります

Factory.define :teacher do |teacher| 
    ... 
    teacher.user 
end 

ファクトリー・ガールがwonderful tutorialを持って、私はあなたがそれを見てお勧めします。

P.S.なぜそれらの変な接頭辞(user_teacher_)をモデル属性に追加したいのですか?非常に醜いので、あなたは間違ったことをしています。

+0

'user_'と' teacher_'で列名の前に接頭辞を付ける必要はありません。 –