Я предотвращал обновление определенных моделей, используя это в модели:
def update
self.errors.add_to_base( "Cannot update a #{ self.to_s }" )
end
Теперь я пишу плагин, который предоставляет дополнительную функциональность модели, и мне нужно обновить одно поле в модели. Если бы я не использовал плагин, я бы сделал это непосредственно в модели...
def update
if self.changed == ['my_field']
super
else
self.errors.add_to_base( "Cannot update a #{ self.to_s }" )
end
end
Я не могу сделать то же самое из своего плагина, так как не знаю, является ли поведение обновления значением ActiveRecord по умолчанию или было переопределено для предотвращения обновлений. Есть ли другой способ предотвратить обновление записей, позволяя мне переопределить для определенного поля (и только в том экземпляре, где мой плагин применяется к этой модели).