Я пытаюсь создать простую систему мягкого удаления, добавив обратный вызов before_destroy
, который устанавливает удаленный флаг, а затем возвращает false (чтобы предотвратить реальное уничтожение).Rails 4: self.update не работает внутри модели
class Project < ActiveRecord::Base
belongs_to :user
before_destroy :soft_delete
def soft_delete
self.update(is_deleted: 1)
false
end
end
Это делает не результата в записи получать обновления. Я не знаю, почему. Я вижу [1m[36m (0.4ms)[0m [1mROLLBACK[0m
в моих журналах, но я не уверен, что это релевантно или нет.
Так что моя стратегия не будет работать, потому что возврат 'false' отменяет обновление, которое устанавливает флаг. Это правильно? – emersonthis
Да, это не продолжится. Думаю, вы должны переместить свою логику на свой контроллер. Или, может быть, поиск, если есть хорошая вещь, чтобы переопределить метод уничтожения модели. –