2012-02-28 80 views
0

這可能有一個簡單的答案,但我迷路了。在視圖中顯示多態關聯

我今天創建了我的第一個Polymorphic Association來創建一個activity域。

這裏的activity.rb:

class Activity < ActiveRecord::Base 

    belongs_to :trackable, :polymorphic => true 

end 

在數據庫活動,我有列:

id 
name 
trackable_id 
trackable_type 
created_at 
updated_at 

這裏的note.rb:

class Note < ActiveRecord::Base 

    has_many :activities, :as => :trackable 

    after_create :create_an_activity 

    def create_an_activity 
    self.activities.build(:name => candidate_id) 
    end 

end 

在我index.html.erb視圖我有:

<% @activities.each do |activity| %> 
    <p>activity.name</p> 
<% end > 

我的問題是:名稱=> candidate_id:

目前,activity.name在視圖中,因爲我有輸出的ID。一個筆記是爲候選人創建的。但是,我真正想要輸出的是候選人名稱(candidate.full_name)(位於候選人表格中)。但是,這不起作用,因爲full_name不在註釋表中。它在候選人桌上。有什麼方法可以訪問嗎?候選人擁有多個筆記,並且筆記屬於候選人。

回答

2

幾個月前與Vin享有技能分享!

我相信你正在尋找可以通過家長協會去,通過調用自訪問什麼 - >母公司 - >屬性:

def create_an_activity 
    self.activities.create(:name => self.candidate.full_name) 
end 

也是正確的我,如果我錯了,但除非你稍後調用save,看起來像self.activities.create是你正在尋找的而不是.build

+0

非常感謝!這工作!我試過它:name => candidate.full_name,但沒有奏效。我忘了包括自己。我愚蠢。有一件很奇怪的事情是.build工作得很好,而不是.create。我想知道爲什麼? (P.S.謝謝你的友好的話) – 2012-02-28 14:28:46

+0

嗯,非常有趣,我正在運行mongoid,也許它與積極的記錄略有不同,它太長了。如果你知道我有興趣知道。 – 2012-02-28 20:43:03