2011-03-16 64 views
0

我有一個「」模型,它是一個ActiveRecord的:的Rails 3:錯誤時訪問活動記錄模型的屬性

class Car < ActiveRecord::Base 
... 
end 

在DB的車表中,有一個名爲「可用列'其中包含布爾值。我嘗試在模型類像訪問此值:

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

end 
end 

但我得到錯誤信息「未定義的方法‘可用’」,爲什麼呢?如何訪問汽車模型的這個屬性?

回答

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 
+0

是的,他可以。 'class Car BitOfUniverse 2011-03-16 13:49:09

+0

@Tumtu,thanx,對我來說是新的 – fl00r 2011-03-16 13:50:44

1

available(而不是avaliable你在self.avaliable寫的)是一個實例方法,你不能從一個類訪問實例方法。

從實例中,您可以訪問實例方法和類方法,但是由於您需要有效的實例,所以無法訪問實例方法。

現在的問題是:你想要做什麼?如果您讓我們知道您正在嘗試做什麼,我們可以提供更好的答案。

0

如果您從類的類方法調用self.available,那麼首先需要創建Car類的@car對象,然後可以輕鬆調用@ car.available。

否則,如果您調用窗體的類實例方法,並且調用對象在那裏可用,那麼self.available將工作。

爲了更清楚地瞭解類方法Vs的實例方法以及如何調用它們,請看這裏。 http://railstips.org/blog/archives/2009/05/11/class-and-instance-methods-in-ruby/

相關問題