0

这是一个非常简单的问题。我正在观看一个 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)在我可以使用该方法之前?

4

1 回答 1

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
于 2013-03-25T23:57:53.440 回答