2011-03-16 63 views
0

我有一个“”模型,它是一个ActiveRecord的:的Rails 3:错误时访问活动记录模型的属性

class Car < ActiveRecord::Base 
... 
end 

在DB的车表中,有一个名为“可用列'其中包含布尔值。我尝试在模型类像访问此值:

class Car < ActiveRecord::Base 
... 
if self.avaliable #error msg: undefined method 'available' 

end 
end 

但我得到错误信息“未定义的方法‘可用’”,为什么呢?如何访问汽车模型的这个属性?

回答

0

你不能写在类体Ruby代码嵌入你应该把它包装

if self.avaliable #error msg: undefined method 'available' 

end 

的方法。你可以把它在before_filter

class Car < ActiveRecord::Base 
    before_filter :check_avaliable 

    def check_avaliable 
    if self.avaliable 
     ... 
    end 
    end 
end 
+0

是的,他可以。 'class Car BitOfUniverse 2011-03-16 13:49:09

+0

@Tumtu,thanx,对我来说是新的 – fl00r 2011-03-16 13:50:44

1

available(而不是avaliable你在self.avaliable写的)是一个实例方法,你不能从一个类访问实例方法。

从实例中,您可以访问实例方法和类方法,但是由于您需要有效的实例,所以无法访问实例方法。

现在的问题是:你想要做什么?如果您让我们知道您正在尝试做什么,我们可以提供更好的答案。

0

如果您从类的类方法调用self.available,那么首先需要创建Car类的@car对象,然后可以轻松调用@ car.available。

否则,如果您调用窗体的类实例方法,并且调用对象在那里可用,那么self.available将工作。

为了更清楚地了解类方法Vs的实例方法以及如何调用它们,请看这里。 http://railstips.org/blog/archives/2009/05/11/class-and-instance-methods-in-ruby/

相关问题