我有以下型号设置。
class Space
has_many :locations, through: :location_spaces
has_many :location_spaces, dependent: :destroy, inverse_of: :space
end
class Location
has_many :spaces, through: :location_spaces
has_many :location_spaces, dependent: :destroy, inverse_of: :location
end
class LocationSpace
belongs_to :location, inverse_of: :location_spaces
belongs_to :space, inverse_of: :location_spaces
end
如果我通过修改Space模型上的location_ids来创建SpaceLocation,这也会触发SpaceLocation的AFTER_CREATE回调。
但是,更新空间模型并将location_ids设置为[]时,将删除SpaceLocation。但是不会调用after_destroy回调。看一下sql,就会破坏它。
为什么没有调用after_destroy回调? 我已经尝试过每次“后”回调,包括after_touched,没有任何东西被调用。
答案 0 :(得分:0)
还有
clear
方法与delete_all
相同,只是它返回关联而不是已删除的记录。
删除匹配
conditions
的记录,而不首先实例化记录,因此不调用destroy
方法也不调用回调。