2015-08-19 75 views
0

我想爲每個設備創建一個聯繫人。目前這兩個模型是獨立的,但我創建了一對一的依賴關係。讓我們來介紹一下背景:如何避免mongoid_alize回調?

給出一個設備型號:

class Device 
    # some ommited code 
    belongs_to :contact, autosave: true, index: true 
end 

並給予其採用艾莉婕聯繫人模式:

class Contact 
    # some ommited code 
    has_one :device 
    alize :device, :app_id, :type 
end 

我創建了執行批量插入到接觸和設備任務楷模。

device = Device.find("xxxxxxa2") 
contact = device.contact 
device.destroy 

的這裏的問題是,device.destroy被自動移除聯繫人文檔中創建的device_fields,我要保持這種信息。

如何暫時避免此after/before_destroy回撥?

回答

0

mongoid_alize gem自動在受影響的模型類中創建回調方法。

device.destroy將在名稱爲denormalize_destroy_to_contactDevice型號中調用回調。

我的解決辦法是在調用任務之前覆蓋這個方法:

class Device 
    def denormalize_destroy_to_contact 
    nil 
    end 
end 

device = Device.find("xxxxxxa2") 
contact = device.contact 
device.destroy