[英]Rails active record object causes error when i try to access any attribute
[英]Rails 3: Error when access Active Record model's attribute
我有一个ActiveRecord的“ 汽车 ”模型:
class Car < ActiveRecord::Base
...
end
在DB的car表中,有一列“ available ”,其中包含布尔值。 我尝试在模型类中访问此值,例如:
class Car < ActiveRecord::Base
...
if self.avaliable #error msg: undefined method 'available'
end
end
但是我收到错误消息“ 未定义的方法'可用' ”,为什么? 如何访问汽车模型的此属性?
available
(而不是avaliable
,你在写self.avaliable
)是一个实例方法,你不能从一个类访问实例方法。
在实例中,您可以访问实例方法和类方法,但在类中,您不能访问实例方法,因为您需要有效的实例。
现在的问题是:您要做什么? 如果您让我们知道您要做什么,我们可能会提供更好的答案。
您不能在类主体中内联编写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
如果您从类的类方法中调用此self.available,那么首先需要创建Car类的@car对象,然后可以轻松地调用@ car.available。
否则,如果您从类的实例方法中调用,并且调用对象在那里可用,则self.available将起作用。
为了更清晰地了解类方法和实例方法以及如何调用它们,请参见此处。 http://railstips.org/blog/archives/2009/05/11/class-and-instance-methods-in-ruby/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.