Ruby on rails 在视图中显示多态关联

Ruby on rails 在视图中显示多态关联,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,也许有一个简单的答案,但我迷路了 我今天创建了我的第一个多态关联来创建活动字段 下面是activity.rb: class Activity < ActiveRecord::Base belongs_to :trackable, :polymorphic => true end 下面是note.rb: class Note < ActiveRecord::Base has_many :activities, :as => :trackable aft

也许有一个简单的答案,但我迷路了

我今天创建了我的第一个多态关联来创建活动字段

下面是activity.rb:

class Activity < ActiveRecord::Base

  belongs_to :trackable, :polymorphic => true

end
下面是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
class注释:可跟踪
创建后:创建活动
def创建一个活动
self.activities.build(:name=>candidate\u id)
结束
结束
在我的index.html.erb视图中,我有:

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

activity.name

我的问题是:


当前,视图中的activity.name正在输出id,因为我有:name=>candidate\u id。将为候选人创建一个注释。但是,我真正希望它输出的是candidate.full_name(在candidates表中)。但是,这不起作用,因为notes表中没有完整的名称。它在候选人表中。有什么方法可以访问它吗?应聘者有很多笔记,其中一张是属于应聘者的。

几个月前与Vin分享了您的技能

我相信,通过调用self->parent->attribute,可以通过父关联访问您要查找的内容:

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

如果我错了,也请纠正我的错误,但除非您稍后调用save,否则您要查找的似乎是self.activities.create而不是build.build

非常感谢!成功了!我试过:name=>candidate.full_name,但没用。我忘了包括赛尔夫。我真傻。一件奇怪的事是。build工作得很好,而不是。create。我想知道为什么?(顺便说一句,谢谢你的好话。)嗯,很有趣,我在运行mongoid,可能它与active record的工作原理略有不同,时间太长了。如果你明白了,我很想知道。
def create_an_activity
  self.activities.create(:name => self.candidate.full_name)
end