Rails 3 - драгоценный камень Factory Girl - отношения между - PullRequest
1 голос
/ 21 марта 2012

У меня есть Пользователь и Учитель модели. Учитель belongs_to Пользователь и пользователь has_one Учитель. Также у меня есть код в файле 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.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 пользователь. Как я могу это исправить?

1 Ответ

6 голосов
/ 21 марта 2012

Вы должны определить ассоциацию:

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

Factory Girl имеет замечательный учебник , я рекомендую вам взглянуть на него.

PS Почему вы хотите добавитьэти странные префиксы (user_, teacher_) к атрибутам модели?Это выглядит очень некрасиво, так что вы определенно делаете что-то не так.

...