在mongoid中通过'<<'分配嵌入项时触发on_save?
我想知道是否有办法在Mongoid映射器中的embedded_in对象上触发after_save回调。
例:
i = Image.new(:file => file) user.images < i.after_save should be triggered here
我知道如果我在单词之后调用i.save
,它会触发,但是在我的代码中很难记住这样做。
此外,调用user.images.create(:file => file)
不是一个选项,因为我会检查以确保相同的文件不会上载两次。
唯一真正的解决方案是在嵌入式文档上调用save
。 这是一种自动完成的方法:
class User references_many :images do def <<(new_elm) returner = super new_elm.save returner end end end
更多信息:
好的,这是一个老问题,但是对于最新的Mongoid,你可以使用:
http://mongoid.org/en/mongoid/docs/relations.html
级联回调
如果希望在对其父级调用持久性操作时触发嵌入式文档回调,则需要为该关系提供级联回调选项。
级联回调仅适用于embeds_one
和embeds_many
关系。
class Band include Mongoid::Document embeds_many :albums, cascade_callbacks: true embeds_one :label, cascade_callbacks: true end
band.save
#触发乐队,专辑和标签上的所有保存回调。