Rails 3:访问​​Active Record模型的属性时出错

时间:2011-03-16 11:17:35

标签: ruby-on-rails ruby-on-rails-3

我有一个'汽车'模型,它是一个ActiveRecord:

class Car < ActiveRecord::Base
 ...
end

在DB的car表中,有一个名为“ available ”的列,它保存了布尔值。我尝试在模型类中访问此值,如:

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

 end 
end

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

3 个答案:

答案 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/