访问范围时出现此错误。

这是AR模型

class StatisticVariable < ActiveRecord::Base
  attr_accessible :code, :name

  has_many  :statistic_values

  scope :logins, where(code: 'logins').first
  scope :unique_logins, where(code: 'unique_logins').first
  scope :registrations, where(code: 'registrations').first

end


当我尝试使用StatisticVariable.logins或任何其他范围时,它会给出:

NoMethodError: undefined method `default_scoped?'


如果我将范围配置为类方法,那么它将完美地工作。

def self.registrations
    where(code: 'registrations').first
end


请指导我了解并解决此问题。

最佳答案

您所谓的scopes不是作用域:它们不是可链接的。

我猜想Rails会尝试在结果中附加一个潜在的default_scope,这会导致失败。

做类似的事情:

  scope :logins, where(code: 'logins')
  scope :unique_logins, where(code: 'unique_logins')
  scope :registrations, where(code: 'registrations')

  def self.login
    logins.first
  end

关于ruby-on-rails - 未定义的方法“default_scoped?”在访问范围时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12365128/

10-11 11:36