2012-04-07 3 views
1

У меня есть 2 модели - Пользователь и Учитель. Преподаватель принадлежит_to , имеет Преподаватель.Rails 3 - Фабрика девушка и последовательность для own_to стол

Итак, я использую Factory Girl перл:

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 в последовательности.

Смежные вопросы