将 rails2 移动到 4 并出现错误 - 未定义的方法“with_scope”

moving rails2 to 4 and getting error - undefined method `with_scope'

如何在 rails4.1.9 中替换此查询

   AuditArea.send(query_options[:include_retired] ? :with_exclusive_scope :  :with_scope) {

     # some stuff
  }

获取错误未定义方法`with_scope'。

with_scope 在较新的 Rails 版本中现在称为 scopingwith_exclusive_scope 现在应该是 unscoped。这两种方法都接受一个块,因此您的代码应该可以正常使用它们。

有关详细信息,请参阅 scoping and unscoped 的文档。

更新: 如果调用 class 本身,scoping 方法将不起作用。它必须已经在作用域上被调用(与 unscoped 相反,它在裸模型 class 上工作)。我首先将 "harmless" 范围 all(select 包含所有记录,因此其行为与裸模型 class AuditArea 相同)添加到 select 这样 send 的两个变体都可以工作:

AuditArea.all.send(query_options[:include_retired] ? :unscoped : :scoping) {
  # ...
}