将rails2移动到4并获取错误 - 未定义的方法`with_scope'

时间:2016-06-11 06:35:34

标签: ruby-on-rails ruby-on-rails-4 ruby-2.2

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

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

     # some stuff
  }

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

1 个答案:

答案 0 :(得分:1)

with_scope现在在较新的Rails版本中称为 scoping with_exclusive_scope现在应该 unscoped 。两种方法都接受一个块,因此您的代码应该可以正常工作。

有关详细信息,请参阅scopingunscoped的文档。

更新:如果在类本身上调用scoping方法,则该方法不起作用。它必须在范围内调用(而不是unscoped,它适用于裸模型类)。我会首先添加"无害"范围all(选择所有记录,因此行为与裸模型类AuditArea的行为相同)到select,以便send的两个变体都可以工作:

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