2011-04-18 83 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認爲我使用數組而不是對象集合,我無法弄清楚。