Ruby on rails 仅在销毁子记录后执行回调
它符合我的要求。但这是一个好的解决方案吗?您能推荐一些更好的替代方案吗?您可以在销毁后使用,并将方法放入job.rb中。这将确保在删除子项(作业)时,它将调用父项来更新值Ruby on rails 仅在销毁子记录后执行回调,ruby-on-rails,callback,Ruby On Rails,Callback,它符合我的要求。但这是一个好的解决方案吗?您能推荐一些更好的替代方案吗?您可以在销毁后使用,并将方法放入job.rb中。这将确保在删除子项(作业)时,它将调用父项来更新值 after_save :set_some_data def set_some_data #Do stuff # WARNING: Don't use any method that will trigger an after_save callback. Infinite loop otherwise. self
after_save :set_some_data
def set_some_data
#Do stuff
# WARNING: Don't use any method that will trigger an after_save callback. Infinite loop otherwise.
self.update_columns(column_name: calculated_value)
end
类作业
有关更详细的回调,您可以检查和,但在本例中,假设我销毁父MyTask对象的3个作业,那么此回调将运行3次。它也不会在创建或更新作业时运行,这意味着我仍然需要在保存回调之前执行。这对我来说似乎不是很有效。升级,因为它将完成所需的工作。是的,我与您的情况相同,我使用after_save for create and update,它似乎效率不高(是的,我同意),特别是如果一个父级中有许多作业,但此处的“save transaction”表示如果子级更改,则应直接更新父级,我打开,还想学习这个案例,如果有另一个选项,保存交易和有效,因为我有很多这样的案例
after_save :set_some_data
def set_some_data
#Do stuff
# WARNING: Don't use any method that will trigger an after_save callback. Infinite loop otherwise.
self.update_columns(column_name: calculated_value)
end
class Job < ApplicationRecord
belongs_to :ownerable, polymorphic: true, optional: true
after_destroy :update_parent
def update_parent
# check your parent model
self.ownerable.update_columns(column_name: calculated_value)
end
end