Один хакерский способ решить эту проблему - установить переменную экземпляра в 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
Возможно, это не лучшее решение, но оно должно работать в вашем случае.