これはおそらく愚かですが、どこにでもサンプルが見つかりません。FactoryGirlは関連付けられたオブジェクトの属性をオーバーライドします
私は2つの工場があります。
p = FactoryGirl.create(:profile, user: {email: "[email protected]"})
または類似した何かが、私はできません:私は何をしたいか
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
は、私は、プロファイルを作成するときに、ユーザーのいくつかの属性をオーバーライドしています構文を正しく取得します。エラー:
ActiveRecord::AssociationTypeMismatch: User(#70239688060520) expected, got Hash(#70239631338900)
私は私が最初にユーザーを作成し、プロファイルに関連付けることで、これを行うことができます知っているが、私はより良い方法がなければならないと思いました。
それともこれは動作します:
p = FactoryGirl.create(:profile, user: FactoryGirl.create(:user, email: "[email protected]"))
が、これは過度に複雑なようです。関連する属性をオーバーライドする簡単な方法はありませんか? これの正しい構文は何ですか?
ありがとうございましたが、私はそれをすべての属性で動作させたいと思っています。たぶん誰もこれを必要としない... – bobomoreno
あなたの例にはエラーがあると思う。 'after(:create)'を 'profile.user.email = evaluator.user_email 'に変更してください.evaluator.user_email.nil?' – Kelly