我有一个'汽车'模型,它是一个ActiveRecord:
class Car < ActiveRecord::Base
...
end
在DB的car表中,有一个名为“ available ”的列,它保存了布尔值。我尝试在模型类中访问此值,如:
class Car < ActiveRecord::Base
...
if self.avaliable #error msg: undefined method 'available'
end
end
但我收到错误消息“未定义方法'可用'”,为什么?如何访问汽车模型的这个属性?
答案 0 :(得分:1)
available
(而不是avaliable
中的self.avaliable
)是一个实例方法,您无法从类中访问实例方法。
从实例中,您可以访问实例方法和类方法,但是从类中无法访问实例方法,因为您需要一个有效的实例。
现在的问题是:你想做什么?如果你告诉我们你想要做什么,我们可以提供更好的答案。
答案 1 :(得分: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
答案 2 :(得分:0)
如果您正在调用此self.available形式类的类方法,那么首先您需要创建Car类的@car对象,然后您可以轻松调用@ car.available。
否则,如果您正在调用表单的实例方法,并且调用对象可用,则self.available将起作用。
为了更清楚地了解类方法,Vs实例方法以及如何调用它们看起来在这里。 http://railstips.org/blog/archives/2009/05/11/class-and-instance-methods-in-ruby/