工厂女孩+ Mongoidembedded文件夹具

假设您有以下mongoid文档:

class User include Mongoid::Document embeds_one :name end class UserName include Mongoid::Document field :first field :last_initial embedded_in :user end 

如何创build一个初始化embedded式名字和最后一个字母的工厂女孩​​工厂? 另外你怎么做embeds_many关系?

我也在寻找这个,因为我正在研究我偶然发现了很多代码,并将它们拼凑在一起(我希望有更好的文档),但这是我的代码的一部分。 地址是1..1的关系,电话是与事件1..n的关系。

  factory :event do title 'Example Event' address { FactoryGirl.build(:address) } phones { [FactoryGirl.build(:phone1), FactoryGirl.build(:phone2)] } end factory :address do place 'foobar tower' street 'foobar st.' city 'foobar city' end factory :phone1, :class => :phone do code '432' number '1234567890' end factory :phone2, :class => :phone do code '432' number '0987654321' end 

(抱歉,如果我不能提供我的链接,他们有点搞砸了)

这里是一个解决scheme,允许您dynamic定义embedded对象的数量:

 FactoryGirl.define do factory :profile do name 'John Doe' email 'john@bigcorp.com' user factory :profile_with_notes do ignore do notes_count 2 end after(:build) do |profile, evaluator| evaluator.notes_count.times do profile.notes.build(FactoryGirl.attributes_for(:note)) end end end end end 

这允许您调用FactoryGirl.create(:profile_with_notes)并获取两个embedded的注释,或者调用FactoryGirl.create(:profile_with_notes, notes_count: 5)并获取五个embedded注释。