覆盖Rails 3中的销毁和删除并删除回调

时间:2012-06-08 10:27:36

标签: ruby-on-rails-3

我想在User模型中阻止销毁和删除,我想阻止回调。简而言之,我想阻止任何删除用户记录的可能性。我试图通过覆盖破坏和删除方法,但它们没有被调用,用户总是被删除。

class User < ActiveRecord::Base
  def destroy
  end

  def delete
  end
end

我不想使用与此相关的任何宝石,所以不要引用任何宝石。我不确定是否重写这些方法是个好主意,可能我应该创建一个'deactivate'方法并保留默认的delete和destroy方法,以防我在Rails控制台中需要它们

2 个答案:

答案 0 :(得分:0)

我不确定我完全理解你的问题。

执行此操作的一种方法是将destroydelete方法设为私有。

你说方法永远不会被调用,但是无论如何都要删除对象。这是怎么发生的?你是从集合中删除它们吗?您可能需要覆盖User的类方法,而不是那两个实例方法。

答案 1 :(得分:0)

请参阅Rails API方法。

如果您知道自己在做什么以及后果,那么覆盖这些方法并不一定是件坏事。有时这是解决问题最简洁的方法。

我的建议是查看以下Rails API方法文档条目,并确保您不会错过任何重要操作。

<强> #destroy

<强> #destroy!

<强> #delete

通过在模型中创建这些方法,它将覆盖继承的Rails API中的任何内容,因此它应该可以正常工作。