Добавление мягкого удаления в мою таблицу Join, которая управляется из другой модели - PullRequest
0 голосов
/ 19 января 2019

У меня есть модель User, для каждого пользователя у меня есть список флажков для переключения определенных настроек. Настройки исходят из модели предпочтений. Между ними есть модель UserPreference для хранения отношения.

Этого легко достичь в форме с помощью simple_form:

= f.association :preferences, as: :check_boxes

Теперь я хочу адаптировать модель UserPreference для мягкого удаления ассоциаций вместо полного их удаления. Для этого я установил discard gem, который в основном просто добавляет несколько областей и сброшенную метку времени.

Проблема в том, что при управлении настройками через пользовательскую модель кажется, что метод уничтожения не вызывается в модели UserPreference. Я попытался создать обратный вызов, но я не могу перехватить вызов, чтобы уничтожить. Как я могу подключиться к логике рельсов, чтобы вызвать сброс в связанном экземпляре вместо уничтожения?

# this doesn't work
class UserPreference < ApplicationRecord
  include Discard::Model
  before_destroy :force_soft_delete
  default_scope -> { kept }

  belongs_to :user
  belongs_to :preference

  def force_soft_delete
    self.discard
    throw :abort
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...