在视图中显示多态关联

时间:2012-02-28 04:28:45

标签: ruby-on-rails ruby-on-rails-3

这可能是一个简单的答案,但我迷路了。

我今天创建了我的第一个Polymorphic Association来创建一个活动领域。

这是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 >

我的问题是:

目前,视图中的activity.name正在输出id,因为我有:name =&gt; candidate_id。为候选人创建了一个注释。但是,我真正希望它输出的是candidate.full_name(在候选表中)。但是,这不起作用,因为full_name不在notes表中。它在候选人表中。有没有办法访问?候选人有很多笔记和一张笔记属于候选人。

1 个答案:

答案 0 :(得分:2)

几个月前与Vin一起享受你的技能分享!

我相信你所寻找的东西可以通过家长协会来访问,通过调用self - &gt;父母 - &gt;属性:

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

如果我错了,还要纠正我,但除非你以后再调用一个保存,看起来像self.activities.create就是你要找的而不是.build