Ruby on rails Rails 3:访问活动记录模型时出错';s属性

Ruby on rails Rails 3:访问活动记录模型时出错';s属性,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有一辆汽车,它是ActiveRecord: class Car < ActiveRecord::Base ... end class-Car

我有一辆汽车,它是ActiveRecord:

class Car < ActiveRecord::Base
 ...
end
class-Car
在DB中的car表中,有一个名为“available”的列,它保存布尔值。我尝试在模型类中访问此值,如下所示:

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

 end 
end
class-Car

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

您不能在类主体中内联编写ruby代码,应该将其包装

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

end 
作为一种方法。您可以在过滤之前调用它

class Car < ActiveRecord::Base
  before_filter :check_avaliable

  def check_avaliable
    if self.avaliable 
      ...
    end 
  end
end
class-Car
可用
(而不是
可用
,正如您在
self.available
中所写的那样)是一个实例方法,您不能从类访问实例方法

从实例可以访问实例方法和类方法,但从类不能访问实例方法,因为需要有效的实例


现在的问题是:你想做什么?如果您告诉我们您想做什么,我们可能会提供更好的答案。

如果您将此self.available表单称为类的class方法,那么首先您需要创建car类的@car对象,然后您可以轻松地调用@car.available

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

关于类方法和实例方法以及如何调用它们,请看这里。

是的,他会<代码>类车