有没有办法让嵌入式文档在mongoid构造时自动初始化?我的意思是指嵌入了一个车库文件的用户。我必须写下面的代码完全建立与车库的用户:Mongoid:嵌入式文档在父类构造时自动初始化
user = User.create!(name: "John")
user.build_garage
user.garage.cars << Car.create!(name: "Bessy")
有没有一种方法,我可以跳过调用user.build_garage
?
感谢
有没有办法让嵌入式文档在mongoid构造时自动初始化?我的意思是指嵌入了一个车库文件的用户。我必须写下面的代码完全建立与车库的用户:Mongoid:嵌入式文档在父类构造时自动初始化
user = User.create!(name: "John")
user.build_garage
user.garage.cars << Car.create!(name: "Bessy")
有没有一种方法,我可以跳过调用user.build_garage
?
感谢
可以回调添加到用户模式是这样的:
class User
...
after_initialize do |u|
u.build_garage unless u.garage
end
...
end
类的每个实例化后,这个回调火灾,所以之后“发现”和“新”闪光。
Mongoid 3有autobuild
选项,它告诉Mongoid在关系被访问时实例化一个新文档,它是nil
。
embeds_one :label, autobuild: true
has_one :producer, autobuild: true
找到一个好主意后发射,因为这并不意味着它会覆盖以前的嵌入式文档? – GTDev
是否有任何mongoid汽车为用户做到这一点? – GTDev
我编辑了答案来解决你的第一个问题。不,没有这种自动性。我会说这样的功能属于实际的应用程序代码。 – moritz