2012-02-28 42 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