2012-04-07 39 views
1

我有2個模型 - 用戶教師教師 belongs_to 用戶,用戶已有教師導軌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

我解決了這個問題。

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

您不必分別指定序列,然後將它們傳遞到另一家工廠 - 你可以用它們的內部工廠是這樣的:

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

或更短

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

然後,以將用戶與教師聯繫起來:

Factory.define :teacher do 
    association :user 
end 

然後,你可以調用

@teacher = Factory(:teacher) 

,它將自動與序列中的下一個USER_LOGIN創建關聯的用戶。