如何避免 mongoid_alize 回调?

How to avoid a mongoid_alize callback?

我想为每个设备创建一个联系人。目前这两个模型是独立的,但我正在创建一对一的依赖关系。先介绍一下上下文:

给定设备型号:

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

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

device.destroy 将在名称为 denormalize_destroy_to_contact.

Device 模型中调用回调

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

class Device
  def denormalize_destroy_to_contact
    nil
  end
end

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