Active Record模型无法识别视图中的方法

时间:2013-03-25 23:54:58

标签: ruby-on-rails

这是一个非常简单的问题。我正在观看有关在模型中定义方法的railscast:

def self.nameoffunction
   ...
end

然后他能够在他的视图中使用Model.nameoffunction引用该方法。

这是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)才能使用该方法?

1 个答案:

答案 0 :(得分:1)

你需要添加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