Ruby on rails 3.1 在Rails中销毁回调顺序之后

Ruby on rails 3.1 在Rails中销毁回调顺序之后,ruby-on-rails-3.1,callback,Ruby On Rails 3.1,Callback,我使用PostgreSql作为数据库,使用Rails 3.1.3和ruby 1.9.3 我有三种型号 活动 ActivityObject ActivityObjectActivity 他们是这样联系的 活动 有很多:活动\u对象\u活动,:依赖=>:销毁 有多个:活动对象,:至=>:活动对象 销毁后:做一些与活动相关的事情 ActivityObject 有很多:活动\u对象\u活动,:依赖=>:销毁 有很多:活动,:通过=>:活动\u对象\u活动 ActivityObjectActivity

我使用PostgreSql作为数据库,使用Rails 3.1.3和ruby 1.9.3 我有三种型号

  • 活动
  • ActivityObject
  • ActivityObjectActivity
他们是这样联系的

活动

有很多:活动\u对象\u活动,:依赖=>:销毁
有多个:活动对象,:至=>:活动对象

销毁后:做一些与活动相关的事情

ActivityObject

有很多:活动\u对象\u活动,:依赖=>:销毁
有很多:活动,:通过=>:活动\u对象\u活动

ActivityObjectActivity

属于:活动,:依赖=>:销毁
属于:活动对象

当我对活动执行销毁时,我观察到
activity\u object\u activities
表项在调用
do\u something\u on\u activity\u object\u related
之前被删除,原因是
依赖:销毁。
因此,当活动被销毁时,当调用与活动对象相关的
do\u something\u on\u activity\u object\u
方法时,它无法找到与活动相关的
activity\u object

在销毁与活动相关的关联之前,是否有一种方法可以调用此
do\u something\u on\u activity\u object\u related
。 有没有办法在销毁后更改
回调的顺序


提前感谢。

您可以自己对删除/销毁依赖项负责,并确保在您完成
do\u something\u on\u activity\u object\u相关的

所以不是

has_many :activity_object_activities,:dependent => :destroy
has_many :activity_objects, :through => :activity_object_activities

after_destroy :do_something_on_activity_object_related
这样做:

has_many :activity_object_activities
has_many :activity_objects, :through => :activity_object_activities

after_destroy do
    do_something_on_activity_object_related

    ActivityObjectActivity.destroy_all(activity_id: self.id)
end
从联接表中删除项目时,可以使用
delete\u all
而不是
destroy\u all
。但你在例子中使用了destroy,我在这里也使用了