4

有没有办法让嵌入式文档在mongoid构造时自动初始化?我的意思是指嵌入了一个车库文件的用户。我必须写下面的代码完全建立与车库的用户:Mongoid:嵌入式文档在父类构造时自动初始化

user = User.create!(name: "John") 
user.build_garage 
user.garage.cars << Car.create!(name: "Bessy") 

有没有一种方法,我可以跳过调用user.build_garage

感谢

回答

6

可以回调添加到用户模式是这样的:

class User 
    ... 
    after_initialize do |u| 
    u.build_garage unless u.garage 
    end 
    ... 
end 

类的每个实例化后,这个回调火灾,所以之后“发现”和“新”闪光。

+0

找到一个好主意后发射,因为这并不意味着它会覆盖以前的嵌入式文档? – GTDev

+0

是否有任何mongoid汽车为用户做到这一点? – GTDev

+0

我编辑了答案来解决你的第一个问题。不,没有这种自动性。我会说这样的功能属于实际的应用程序代码。 – moritz

11

Mongoid 3有autobuild选项,它告诉Mongoid在关系被访问时实例化一个新文档,它是nil

embeds_one :label, autobuild: true 
has_one :producer, autobuild: true