2011-04-18 150 views
0

我有一个名为Shop的模型,一个叫Brand。我怎样才能把这个写成一个查询?

shop :has_many_brands 
brands: belongs_to_shop 

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

希望它有道理......

这可能吗?

+0

您只想拥有一个品牌的所有商店的列表。如果他们没有品牌,你希望在品牌商店之后展示他们? – a3uge 2011-04-18 19:15:37

+0

是的,这是现货 – andkjaer 2011-04-18 19:18:00

回答

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 < @ shopWithout),那么你只需要一个循环。没有Ruby认为我使用数组而不是对象集合,我无法弄清楚。

相关问题