2012-04-05 253 views
2

我有一個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

回答

1

當你更新你的人,你可以傳遞一個空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