列出同一模型拥有的记录?

时间:2012-04-25 14:03:50

标签: ruby-on-rails-3 model associations relation

我有一个简单的Rails 3应用程序,它有许多模型。我遇到问题的模型的简单概述是:

客户端模型

has_many :animals

动物模型

belongs_to :client

我能够做的是显示由同一客户拥有的其他动物的列表。

这样的事情:

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

由于这是在Animal控制器中,我的示例代码将无法正常工作。任何指针都会受到赞赏。

更新

澄清一下,如果我有以下记录:

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

然后我去了狗的记录的节目视图,我想要一个列表,显示丹尼拥有的所有动物。 E.g。

Cat
Dog
Rabbit

理想情况下,排除当前查看的动物(在本例中为狗)。

我尝试了以下但是它似乎不起作用:

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

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您有@animal并希望展示@animal所有者拥有的所有动物。这可以这样做:

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

更新

您只需在.where上添加@animal.client.animals

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

在视图中执行此操作并不是一个好主意。所以我会在我的Animal模型中添加一个实例方法:

def other_animals_with_same_owner
  client.animals.where('id != ?', id)
end

你可以这样做:

@animal.other_animals_with_same_owner.each ...