我怎样才能把这个写成一个查询?
问题描述:
我有一个名为Shop的模型,一个叫Brand。我怎样才能把这个写成一个查询?
shop :has_many_brands
brands: belongs_to_shop
我想要做的是有一个查询,执行以下操作。
选择所有商店和品牌。 显示所有商店的列表,首先显示具有shop.name订购品牌的商店,然后显示shop.name订购的商店的其余商品。
希望它有道理......
这可能吗?
答
如果您只是需要在视图中列出,最简单的方法是显示一个,然后显示另一个。
所以你会显示所有品牌商店,并正常排序。
然后显示所有没有品牌的商店,并正常排序。
在你的店展控制器:
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 < @ shopWithout),那么你只需要一个循环。没有Ruby认为我使用数组而不是对象集合,我无法弄清楚。
您只想拥有一个品牌的所有商店的列表。如果他们没有品牌,你希望在品牌商店之后展示他们? – a3uge 2011-04-18 19:15:37
是的,这是现货 – andkjaer 2011-04-18 19:18:00