我怎么能把它写成一个查询?

时间:2011-04-18 18:49:43

标签: ruby-on-rails-3 activerecord

我有一个名为Shop的模型和一个名为Brand的模型。

shop :has_many_brands
brands: belongs_to_shop

我想做的是有一个查询执行以下操作 选择所有商店和品牌。 显示所有商店的列表,首先展示有shop.name订购品牌的商店,然后通过shop.name订购商店。

希望它有意义......

这可能吗?

1 个答案:

答案 0 :(得分:0)

如果您只需要在视图中使用列表,最简单的方法是显示一个,然后显示另一个。

因此,您将显示所有品牌商店,并正常排序。

然后显示所有没有品牌的商店,并正常排序。

在您的商店展示控制器中:

if Shop.brands.empty?
   @shopsWithout = @shops.sort_by{ |shop| shop.name}
else
   @shopsWith = @shops.sort_by{ |shop| topic.name}
end

然后在你的视图中,只显示每个。

<% unless @shopsWith.blank?  %>
  <% @shopsWith.each do |shop| %>
    Shop: <%= shop.name %> Brand: <%= (you can loop shop.brands.all) %>
  <% end %>
<% end %>
<% unless @shopsWithout.blank? %>
  <% @shopsWithout.each do |shop| %>
    Shop: <%= shop.name %><br />
  <% end %>
<% end %>

我测试过这个并且工作正常。不知道如何连接@shopsWith和@shopsWithout,但是如果你可以在控制器中做到这一点(@shops = @shopsWith&lt;&lt; @shopsWithout)那么你只需要一个循环。如果没有Ruby认为我正在使用数组而不是对象集合,我无法弄明白。