这是一个非常简单的问题。我正在观看有关在模型中定义方法的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)
才能使用该方法?
答案 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