Это, наверное, глупо, но я не могу найти пример где-нибудь.Атрибут FactoryGirl переопределения связанного объекта
У меня есть два завода:
FactoryGirl.define do
factory :profile do
user
title "director"
bio "I am very good at things"
linked_in "http://my.linkedin.profile.com"
website "www.mysite.com"
city "London"
end
end
FactoryGirl.define do
factory :user do |u|
u.first_name {Faker::Name.first_name}
u.last_name {Faker::Name.last_name}
company 'National Stock Exchange'
u.email {Faker::Internet.email}
end
end
То, что я хочу сделать, это переопределить некоторые атрибуты пользователя при создании профиля:
p = FactoryGirl.create(:profile, user: {email: "[email protected]"})
или что-то подобное, но я не могу получить синтаксис правильно. Ошибка:
ActiveRecord::AssociationTypeMismatch: User(#70239688060520) expected, got Hash(#70239631338900)
Я знаю, что могу сделать это, создав пользователя, а затем связать его с профилем, но я думал, что должно быть лучше.
Или это будет работать:
p = FactoryGirl.create(:profile, user: FactoryGirl.create(:user, email: "[email protected]"))
, но это кажется слишком сложным. Нет ли более простого способа переопределить связанный атрибут? Каков правильный синтаксис для этого?
Спасибо, но я бы хотел, чтобы это работало для любого атрибута, поэтому я бы не захотел его кодировать для каждого подобного. Может быть, никто не нуждается в этом ... – bobomoreno
Я думаю, что ваш пример имеет ошибку. Измените параметр 'after (: create)' to '' profile.user.email = evaluationator.user_email, если только параметр valuator.user_email.nil? ' – Kelly