只破坏depdendents(又名:发送:_run_destroy_callbacks“代码闻到了吗?)

时间:2013-06-11 06:32:38

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

我已经为我们的用户模型实现了一个安全销毁方法,因为除非用户有调查,否则用户只能被硬销毁,否则,软破坏(通过设置deleted_at)就完成了:

alias_method :original_destroy, :destroy

def destroy
  if surveys.any?
    update_column :deleted_at, DateTime.now
    surveys.each { |s| s.anonymize }
    send :_run_destroy_callbacks
    @destroyed = true
    freeze
  else
    original_destroy
  end
end

我不确定是否有更好的方法来销毁dependent: destroy以上的所有关联,而不是上面的send :_run_destroy_callbacks行。

感谢您的提示!

1 个答案:

答案 0 :(得分:0)

我将自己回答:对于Rails 4,您应该使用run_callbacks(:destroy) { ... }代替。