我有一个奇怪的问题。例如,我只有两个模型:
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 从某事变为零 - 没有回调的发射
当shelf_id为所有书籍更改时,我在控制台中看到所有查询,但是对于那些为shelf_id获取nil的人,不会触发回调。
我已经尝试过after_update,after_save。我甚至试图使用观察者,但问题仍然存在。