我有一個Person
模型,它與Email
模型有多對多的關係,我想創建一個工廠讓我爲該人生成姓名(這已經完成)並創建一個電子郵件地址這是基於該人的姓名。以下是我對創造一個person
的名字:如何在factory_girl中構建/創建多對多關聯?
Factory.sequence :first_name do |n|
first_name = %w[FirstName1 FirstName2] # ... etc (I'm using a real subset of first names)
first_name[(rand * first_name.length)]
end
Factory.sequence :last_name do |n|
last_name = %w[LastName1 LastName2] # ... etc (I'm using a real subset of last names)
last_name[(rand * last_name.length)]
end
Factory.define :person do |p|
#p.id ???
p.first_name { Factory.next(:first_name) }
p.last_name { Factory.next(:last_name) }
#ok here is where I'm stuck
#p.email_addresses {|p| Factory(:email_address_person_link) }
end
Factory.define :email_address_person_link do |eapl|
# how can I link this with :person and :email_address ?
# eapl.person_id ???
# eapl.email_address_id ???
end
Factory.define :email_address do |e|
#how can I pass p.first_name and p.last_name into here?
#e.id ???
e.email first_name + "." + last_name + "@test.com"
end
這很有效,你搖滾!對於任何有興趣的人,請查看這個博客:http://robots.thoughtbot.com/post/254496652/aint-no-calla-back-girl或http://railsondave.blogspot.com/2009/ 05 /創建-的hasMany-通工廠,with.html – DJTripleThreat 2010-08-08 01:42:48