2013-03-25 74 views
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)

回答

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 
+0

我试过,但它仍然是不确定的? – 2013-03-25 23:59:29

+0

尝试通过键入reload重新加载控制台! – 2013-03-26 00:02:19

+0

TY你是对的。我不知道你必须重新加载控制台!我测试了self.blahblah一百万次,从来没有想过我的控制台是问题。 – 2013-03-26 00:05:05