2013-07-07 49 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