2012-04-25 7 views
1

私はいくつかのモデルを持つ単純なRails 3アプリケーションを持っています。私はとのトラブルを抱えているモデルの簡単な概要は次のとおりです。同じモデルが所有するレコードをリストしますか?

クライアントモデル

has_many :animals 

動物モデル

belongs_to :client 

行うことができるように私は何だろうショーです同じクライアントが所有する他の動物のリスト。このような

何か:

<% @client.animals.each do |animal| %> 
    <%= animal.AnimalName %> 
<% end %> 

これは動物のコントローラ内にあるとして、私の例のコードは動作しません。任意のポインタが評価されるだろう。

更新

、明確にするために、私は次のレコードがある場合:

Danny (Client) 
Cat (animal owned by Danny) 
Dog (animal owned by Danny) 
Rabbit (animal owned by Danny) 

と私はその後、犬のレコードのショービューに行ってきました、私はすべて表示されるでしょうリストを希望しますダニーが所有する動物。例えば。

Cat 
Dog 
Rabbit 

現在見ている動物(この場合は犬)を理想的に排除します。

私は次のことを試してみましたが、動作していないよう:

<% @client.animals.each do |client| %> 
    <%= @client.animal.AnimalName %> 
<% end %> 
+0

あなたは*その他*動物とはどういう意味ですか?何以外? '@client.animals'は、このクライアントが所有するすべての動物を保持する必要があります。 – Mischa

+0

@ミシャ私の質問を更新しました。 – dannymcc

答えて

2

私が正しくあなたを理解していれば、あなたが@animalを持っていると@animalの所有者が所有するすべての動物を示したいと思います。あなただけの@animal.client.animals.whereを追加することができます

@animal.client.animals.where('id != ?', @animal.id).each ... 

それはAでこれを行うために、このような良いアイデアではありません

<% @animal.client.animals.each do |animal| %> 
    <%= animal.AnimalName %> 
<% end %> 

更新:これは、次のように行うことができますビュー。だから、私は動物モデルにインスタンスメソッドを追加します。

あなたが行うことができます。これにより
def other_animals_with_same_owner 
    client.animals.where('id != ?', id) 
end 

@animal.other_animals_with_same_owner.each ... 
+0

ああ、何かの理由で逆の '@ client.animal'を試していました。現在の動物をリストから省略する標準的な方法はありますか? – dannymcc

関連する問題