की विशेषता ओवरराइड करें यह शायद मूर्खतापूर्ण सरल है लेकिन मुझे कहीं भी एक उदाहरण नहीं मिल रहा है।फैक्ट्रीगर्ल संबंधित ऑब्जेक्ट
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)' को 'profile.user.email = मूल्यांकनकर्ता.user_email' के रूप में बदलें जब तक मूल्यांकनकर्ता.user_email.nil? ' – Kelly