保存嵌入文档mongoid

问题描述:

我有一个embeds_many地址的人模型。保存嵌入文档mongoid

有没有办法在更新时总是清除嵌入关系?例如,如果我发送一个人的完整表示,包括地址,我想替换现有地址而不是附加地址。

我的临时解决方法是一个before_save回调其清除掉所有的地址

class Person 
    include Mongoid::Document 
    embeds_many :addresses 

    before_save :clear_addresses! 

    def clear_addresses! 
    self.unset(:addresses) 
    end 
end 
+0

如果你这样做,为什么有一个embeds_many地址?因为你从来没有将这个地址与你的人联系在一起...... – shingara 2012-04-06 07:33:47

当你更新你的人,你可以传递一个空addresses PARAMS

person.update_attributes(:addresses => []) 
+0

是的,我确定可以。但我想要做的就是每次清理一次。如果地址通过,这些应该覆盖已经存在的地址。 – 2012-04-07 13:35:16

+0

我真的不明白目的:( – shingara 2012-04-08 19:35:54

+0

)除非将它发送到服务器,否则我的当前设置地址应该被清除。因此,不传递任何地址应该清除现有的地址。 – 2012-04-09 14:12:46