2013-07-07 117 views
1

我有幾個模型,城市,酒店和房間。城市has_many酒店,酒店has_many房間。每個房間都有一個價格。我試圖按最低價格房間,asc和desc排序。有效記錄按最小值排序

在我的結果中,我還顯示了酒店的最低價格。我能成功地按價格排序屁股此

City.first.includes(hotel: :rooms).order("rooms.price asc")

但因爲我想總是顯示最低的價格,這不,如果我想那種前高後低,因爲它按工作酒店的最高房價。

有沒有辦法根據酒店最低房價進行分類?如果我嘗試按MIN(rooms.price) desc排序,則會出現錯誤。

回答

1

城市模型

attr_accessible :name 
has_many :hotels 

酒店模型

attr_accessible :city_id, :name 
has_many :rooms 
belongs_to :city 

城市模型

attr_accessible :hotel_id, :name, :price 
belongs_to :hotel 

請試試用

@rooms = Room.includes([:hotel => [:city]]).select('hotel_id, MIN(price) AS price').group('hotel_id').order('MIN(rooms.price) ASC') 

在你的視圖文件

<% @rooms.each do |room| %> 
<div> 
    <div><%= room.hotel.name</div> 
    <div><%= room.hotel.city%></div> 
    <div><%= room.price%></div> 
</div> 
<% end %> 
+1

我想選擇一個特定城市的酒店如果? – AdamB