@eldar_web

Как в Ruby on Rails при сохранении записи одной модели сохранять и все записи связанные с этой моделью?

К примеру есть модель User с Subscriber-ом:
has_many :subscribers, dependent: :destroy

Т.е., при удалении записи user-а удаляются связанные записи c subscriber.

Но у меня появилась задача - не удалять ничего из БД, а просто пометить как удаленные.
А для этого я добавил ко всем моделям дополнительное поле - deleted (false или true).

Так вот щас, я вместо удаления записи user я просто меня deleted: false на true, то есть, будет событие не удаления, а сохранения.

Появляется вопрос, раньше при удалении записи user автоматически удалялись записи subscriber.
А как теперь можно сделать так, что при сохранении user, то есть, именно при изменении deleted:false на true, это происходило и в subscriber (как лучше сделать)???
  • Вопрос задан
  • 211 просмотров
Пригласить эксперта
Ответы на вопрос 2
Попробуйте гем paranoia, должен вам подойти, или выберите другой подходящий на ruby-toolbox
Ответ написан
Комментировать
@CorbenDallass
before_save do
  subscribers.update_all(deleted: true) if deleted && deleted_changed?
end


Обратите внимание, что при использовании update_all не вызываются колбеки соответствующих изменяемых объектов. Нужны колбеки – сохраняйте поодиночке.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы