2012-02-24 18 views
2

私は、関連が渡された部分を持っています。私は協会を渡したオブジェクトを取得したい。これはどうすればいいですか?私はそれが簡単だと思ったが、私はその方法を見つけることができない。ここでActiveRecord :: Relationの親を取得

は私が部分的に渡すものです:ここでは

<%= render :partial => 'shared/records_table', :locals => {:parent => @location, :records => @location.people} %> 

は私が部分的に渡すしたいものです。

<%= render :partial => 'shared/records_table', :locals => {:records => @location.people} %> 

このような事例もあります。

<%= render :partial => 'shared/records_table', :locals => {:parent => @time, :records => @time.families} %> 
は、

および

<%= render :partial => 'shared/records_table', :locals => {:parent => @car, :records => @car.families} %> 

私は協会または親のクラスを知らない。

+0

ここでは、コードは –

+0

です上記の部分コードを表示します。 @locationを取得するためにレコードを使用したい – Wilhelm

答えて

0

その情報を部分的に渡すことに反対する理由がわからないのは確かですが、場所に人が多く、人が所在地に属している場合は、部分的に電話をかけて電話をかけるだけで親。

編集:parentメソッドをモデルに追加して、適切な関連付けを返します。たとえばperson.parentLocationオブジェクトを返します。

真実ですが、部分的に親を渡すだけでも問題はありません。

+0

答えをありがとう。私は、これがうまくいかない理由を示す別の例を加えました。私は協会または親のタイプを知らない。 – Wilhelm

+0

なぜあなたは部分的に親を渡すことに反対ですか? – James

+0

不要で冗長なようです。私はこの部分を多く使うつもりで、それを渡す必要はないと思っています。 – Wilhelm

0

あなたのLocationクラスにはhas_many :peopleのようなものがあり、Personクラスにはbelongs_to :locationのようなものがあります。だから、なぜ各クラスの親に#parentのエイリアスだけではないのですか?道すべてのレコードが親に応答し、あなたが部分的にそれを渡す必要はありません

belongs_to :location 
alias_method :parent, :location 

:あなたのPersonクラスは、次にようになります。あなたはファミリークラスで同様のことをする必要があります。

これに注意してください。部分的にparentを呼び出すと、各レコードのデータベースから親がロードされます。あなたの部分をレンダリングするときは、これを避けるために次のようなことをする必要があります:

render :partial => 'shared/records_table', :locals => {:records => @location.people.includes(:location)} 
+0

お返事ありがとうございます。残念ながら、これはどちらもうまくいかない。問題は、これらのモデルのすべてが相互に関連していることです。複数の親があります。私は本当に協会の所有者を探しています。 – Wilhelm

関連する問題