Ruby on rails 视图中的活动记录模型未识别方法

Ruby on rails 视图中的活动记录模型未识别方法,ruby-on-rails,Ruby On Rails,这是一个非常简单的问题。我在看一个railscast,其中一个方法在模型中定义为: def self.nameoffunction ... end 然后,他能够在视图中使用Model.nameoff函数引用该方法 它是2010年的railscast,所以我猜自那以后有些变化,因为当我尝试在模型中创建函数时,当我尝试在视图中引用它时,会得到未定义的方法 我希望在我的模型中创建一种方法,其思路如下: def blahblah(variable) a = select('column'

这是一个非常简单的问题。我在看一个railscast,其中一个方法在模型中定义为:

def self.nameoffunction
   ...
end
然后,他能够在视图中使用Model.nameoff函数引用该方法

它是2010年的railscast,所以我猜自那以后有些变化,因为当我尝试在模型中创建函数时,当我尝试在视图中引用它时,会得到未定义的方法

我希望在我的模型中创建一种方法,其思路如下:

def blahblah(variable)
    a = select('column').where('...variable referenced here...').limit(2) 
    b = []
    b.push(a[0]['column'])
    b.push(a[1]['column'])
    return b.sum
end
当我进入控制台并键入
Model.blahblah
时,我得到一个未定义的错误


所以我的问题是什么时候我可以使用
Model.blahblah
中的方法,什么时候我必须创建一个对象,比如
Model.find_by_id(3)
,然后我才能使用这个方法?

你需要添加
self。
所以它是一个类方法,而不是像你现在拥有的实例方法

def self.blahblah(variable)
    a = select('column').where('...variable referenced here...').limit(2) 
    b = []
    b.push(a[0]['column'])
    b.push(a[1]['column'])
    return b.sum
end
另一种选择是执行以下操作:

class << self
  def blahblah(variable)
    a = select('column').where('...variable referenced here...').limit(2) 
    b = []
    b.push(a[0]['column'])
    b.push(a[1]['column'])
    return b.sum
  end
end

class通过键入reload尝试重新加载控制台!你说得对。我不知道你得重新装控制台!我对self.blahblah进行了无数次测试,从未想过我的控制台会出问题。很高兴我能帮助Chowza:)