【问题标题】:Override destroy and delete in Rails 3 and removing the callbacks在 Rails 3 中覆盖 destroy 和 delete 并删除回调
【发布时间】:2012-06-08 10:27:35
【问题描述】:

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

class User < ActiveRecord::Base
  def destroy
  end

  def delete
  end
end

我不想使用任何与此相关的 gem,所以不要引用任何 gem。我不确定重写这些方法是否是个好主意,也许我应该只创建一个“停用”方法并将默认的删除和销毁方法保留在那里,以防万一我在 Rails 控制台中需要它们

【问题讨论】:

标签: ruby-on-rails-3


【解决方案1】:

请参阅 Rails API 方法。

只要您知道自己在做什么以及后果,重写这些方法不一定是坏事。有时这是解决问题的最干净的方法。

我的建议是查看以下 Rails API 方法文档条目,并确保此处没有遗漏任何重要操作。

#destroy

#destroy!

#delete

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

【讨论】:

    【解决方案2】:

    我不确定我是否完全理解您的问题。

    一种方法是将destroydelete 方法设为私有。

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

    【讨论】:

    • 我认为他不希望它们实际从数据库中删除,而是希望将它们标记为已删除。根据站点的目标和信息保存的重要性,仅通过手动/离线数据库维护删除此类记录并不是一个不合理的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多