2012-03-01 84 views
0

這是一個很多(建議跟蹤)對一個(夥伴)關係。問題has_many和belongs_to關聯,找不到方法

我得到undefined method 'reference' for ProposalTracking:Class誤差@company.proposalTracking.reference

當我運行@company.proposalTracking返回我ProposalTracking對象。

這裏是我的模型:

class ProposalTracking < ActiveRecord::Base 
    set_table_name "Proposal_Tracking" 
    belongs_to :partner 
end 

class Partner < ActiveRecord::Base 
    has_many :proposalTracking 
end 

我想要得到的是proposalTracking

@company = Partner.find(params[:id]) 
@company.proposalTracking.reference 

的屬性,但是這會導致錯誤undefined method 'reference' for ProposalTracking:Class

我已閱讀解決方案,其中這是因爲它是一對多的關係,合作伙伴可能有多個軌道建議,所以我必須抓住第一個使用.first但我試過這個,然後說

You have a nil object when you didn't expect it! 
The error occurred while evaluating nil.reference 

任何幫助將不勝感激!

+0

請更好的解釋這裏的關聯ProposalTracking情況下(因爲的has_many)的陣列。我不確定合作伙伴是否應該有很多提案追蹤,或者只有一個。 – 2012-03-01 17:00:48

+0

這是一個多對一的建議跟蹤到合作伙伴關係,因此合作伙伴有很多提案跟蹤 – 2012-03-01 17:09:21

回答

0

應該

class Partner < ActiveRecord::Base 
    has_many :proposal_trackings 
end 

並且你可以通過@company.proposal_trackings訪問它。但是,這實際上是你必須遍歷得到每個屬性

@company.proposal_trackings.map(&:reference)

+0

問題是我不想只從該對象引用屬性,我想要它包含的所有屬性。那麼應該怎樣才能提出建議,而不是建議? – 2012-03-01 21:06:57

+0

這是Rails中的一個約定。如果你想要所有的屬性都使用'@ company.proposal_trackings'數組並用_each_fro例子遍歷元素。 – iltempo 2012-03-01 21:12:28

+0

非常感謝!出於某種原因,加上「s」到最後工作......愚蠢的約定。但我確實使用了'has_many:proposalTrackings'並且它可以工作 – 2012-03-01 21:21:45

相關問題