2010-12-03 100 views
1

我有以下關係,在rails控制檯工作,但不是當我運行該網站時,我做錯了什麼?引用belongs_to association_to belongs_to協會

class C < ActiveRecord::Base 
    belongs_to :b 
end 

class B < ActiveRecord::Base 
    belongs_to :a 
    has_many :c 

    def title 
    a.title 
    end 
end 

表C有一個外鍵B和B有一個外鍵A.

這個作品在軌控制檯。

c = C.find(12) 
c.b.title 

但是,當我運行該網站時它不起作用。

以下是錯誤我得到

NoMethodError (undefined method `title' for #<ActiveRecord::Associations::BelongsToAssociation:0x104feb5a0>): 
+0

當您在網站中使用它時,是否收到任何錯誤消息? – 2010-12-03 21:09:32

+0

你剛剛輸錯`a`符號嗎?這應該是`:a`不``a:` – Alex 2010-12-03 21:10:01

+0

我修正了a:typo並添加了我得到的實際錯誤。 – MHinton 2010-12-03 21:13:17

回答

-1

我不得不把B類題方法到一個類的方法來得到它的工作。

0

HAS_ONE(association_id,選項= {}) 指定一個一對一關聯 與另一個類。如果其他類 包含外鍵,則只能使用此方法 。如果 當前類包含外鍵 鍵,那麼應該使用belongs_to 代替。另請參閱 ActiveRecord :: Associations :: ClassMethods的 概述何時使用has_one和 何時使用belongs_to。

3

而不是定義一個方法來做到這一點,delegate!在app/models/c.rb

delegate :title, :to => :b 

然後在app/models/b.rb

delegate :title, :to => :a