繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM