【问题标题】:How to avoid a mongoid_alize callback?如何避免 mongoid_alize 回调?
【发布时间】:2015-08-19 11:13:52
【问题描述】:

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

给定一个设备模型:

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

【问题讨论】:

    标签: ruby-on-rails serialization mongoid


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 2018-02-06
      • 2017-08-18
      • 1970-01-01
      • 2017-05-08
      • 2014-11-09
      相关资源
      最近更新 更多