【发布时间】:2016-04-05 19:58:21
【问题描述】:
我有以下模型设置。
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,但没有调用任何内容。
【问题讨论】:
-
这回答了我的问题。 stackoverflow.com/questions/30629680/…
标签: ruby-on-rails ruby ruby-on-rails-4