gpt4 book ai didi

ruby-on-rails - Ruby 1.9.3 -> 2.0 别名方法和扩展

转载 作者:数据小太阳 更新时间:2023-10-29 07:08:12 25 4
gpt4 key购买 nike

我正在尝试将 Ruby 1.9.3 应用程序升级到 2.0,除了一个小问题外,一切似乎都很顺利。我写了一个模块,我将其包含在我的模型中以覆盖 activerecord destroy。它将现有的 destroy 方法别名为 destroy!,然后覆盖 destroy 以更改记录上的 deleted_at 时间戳。仅当我升级到 ruby​​ 2.0 时,destroy! 不再破坏记录,但其行为就像我的新覆盖方法一样。知道为什么会这样吗?下面是更相关的代码部分。完整要点 here .

  def self.included(base)                                                          
base.class_eval do
alias_method :destroy!, :destroy
alias_method :delete!, :delete
default_scope -> { where(:deleted_at => nil) }
end

base.send :extend, ClassMethods
base.send :include, InstanceMethods
end

最佳答案

查看 paranoia gem .它是软删除的 Rails 3/4 兼容实现,可以满足您的需求。如果您只想提供软删除,那么我会使用 gem 并完成它。如果您自己实现软删除,那么实现可以让您对以前的操作方式有一些了解。

关于ruby-on-rails - Ruby 1.9.3 -> 2.0 别名方法和扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20110015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com