這可能很簡單,但我無法在任何地方找到示例。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 2013-05-01 11:44:47
我認爲你的例子有一個錯誤。將'after(:create)'改爲'profile.user.email = evaluateator.user_email,除非evaluateator.user_email.nil?' – Kelly 2015-10-23 21:45:52