У меня странная проблема.Например, у меня есть только две модели:
class Book < ActiveRecord::Base
belongs_to :shelf
after_update :specific_callback
private
def specific_callback
# some actions here
end
end
class Shelf < ActiveRecord::Base
has_many :books
end
Так что проблема в том, что если я изменю точное отношение книжная полка через книгу - например:
book.shelf = shelf
# or
book.shelf_id = shelf.id
, а затем, если я сохранюкнига - это нормально, поэтому обратный вызов срабатывает нормально, но если я работаю с книгой через полку и с ее методом book_ids , начинаются проблемы, например:
shelf.book_ids = [1,2,3]
здесь обратные вызовы для книг запускаются только для новых добавленных книг, другими словами, если book.shelf_id изменяется с nil на некоторый shelf.id - все нормально, и обратный вызов срабатывает нормально, но если book.shelf_id изменится на nil из-за отсутствия обратного вызова.
Я вижу все запросы в консоли, когда Shel_id изменяется для всех книг, но обратные вызовы не запускаются для тех, кто получает nil для shelf_id.
Ive ужепытался использовать after_update, after_save.Я даже пытался использовать наблюдателей, но проблема все еще появляется.