如何避免mongoid_alize回调?

时间:2015-08-19 11:13:52

标签: ruby-on-rails serialization mongoid

我想为每个设备创建一个联系人。此时这两个模型是独立的,但我创建了一对一的依赖。让我们介绍一下背景:

给出设备型号:

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

并给出了一个使用alize的Contact模型:

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回调?

1 个答案:

答案 0 :(得分:0)

mongoid_alize gem会在受影响的模型类中自动创建回调方法。

device.destroy会在名为Device的{​​{1}}模型中调用回调。

我的解决方案是在调用任务之前覆盖此方法:

denormalize_destroy_to_contact