2015-08-19 13 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 будет вызывать обратный вызов в модели Device, имя которой denormalize_destroy_to_contact.

Мое решение было перезаписать этот метод перед вызовом задачи:

class Device 
    def denormalize_destroy_to_contact 
    nil 
    end 
end 

device = Device.find("xxxxxxa2") 
contact = device.contact 
device.destroy 
Смежные вопросы