2012-04-07 19 views
1

私は2モデルがありますユーザー教師です。 教師 belongs_to ユーザーユーザーです。教師です。Rails 3 - belongs_toテーブルのための工場の女の子とシーケンス

だから、私は工場の女の子の宝石を使用します。

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.user                    
end 

を私が問題に会って、私はそれを解決する方法を理解していません。工場を経由してユーザーを作成すると、簡単に次のように書くことができます。

@user = Factory(:user, :user_login => Factory.next(:user_login) ) 

これにより、固有ログインのユーザーが作成されます。

私は先生のために同じことをすることができますか?私はそれを試しました:

@teacher = Factory(:teacher, :user_login => Factory.next(:user_login) ) 

そして、それは動作しません。

答えて

0

私はそれを解決しました。その後

Factory.define :user do |user| 
    # ... 
    user.sequence(:user_login) { |n| "person=#{n}" } 
end 

または短い

Factory.define :user do 
    # ... 
    sequence(:user_login) { |n| "person=#{n}" } 
end 

を:あなたはこのように工場内でそれらを使用することができます -

@teacher = Factory(:teacher, 
        :user => Factory(:user, :user_login => Factory.next(:user_login))) 
2

は個別のシーケンスを指定し、別の工場にそれらを渡す必要はありません。 、教師とユーザを関連付ける:

Factory.define :teacher do 
    association :user 
end 

次に、あなただけの自動シーケンス内の次のUSER_LOGINに関連付けられているユーザを作成します

@teacher = Factory(:teacher) 

を呼び出すことができます。

関連する問題