2012-02-28 13 views
0

これには簡単な答えがありますが、私は失われています。多態性の関連付けをビューに表示

私は最初に多面体協会を作ってアクティビティフィールドを作成しました。ここで

が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がnotes表にないため、これは機能しません。それは候補者のテーブルにあります。それにアクセスする方法はありますか?候補者はhave_many notesを、候補はbelongs_toを候補とする。

答えて

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、しかしそれは動作しませんでした。 .selfを含めるのを忘れてしまった。私のダム。奇妙なことの1つは、.buildは.createではなく、うまく動作していることです。なぜだろう? (P.S.あなたの親切な言葉をありがとう) –

+0

非常に興味深いですが、私はモンゴイドを実行しています。多分アクティブなレコードとは少し違っていて、長すぎます。もしあなたがそれを理解するなら、私は知りたいと思うだろう。 –

関連する問題