Как узнать, когда атрибуты has_many изменились в Rails? - PullRequest
0 голосов
/ 08 октября 2019

У меня есть отношение has_many через, например, автомобильные аксессуары has_many. На столе транспортных средств аксессуары сохраняются в виде accessories_ids. Как я могу выполнить обратный вызов after_save для объекта транспортного средства, когда были изменены accessories_ids? Кроме того, я попытался saved_change_to_accessories_ids, который, кажется, не работает.

1 Ответ

0 голосов
/ 08 октября 2019

Один хакерский способ решить эту проблему - установить переменную экземпляра в before_save.

before_save :set_initial_accessories_ids

private

def set_initial_accessories_ids
  @initial_accessories_ids = self.accessories_ids
end

Теперь в вашем обратном вызове after_save вы можете использовать эту переменную.

def your_callback
  if @initial_accessories_ids.present? && @initial_accessories_ids != self.accessories_ids
    # do something
  end
end

Возможно, это не лучшее решение, но оно должно работать в вашем случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...