1

我有几个模型,City、Hotel 和 Room。城市has_many酒店,酒店has_many客房。每个房间都有价格。我正在尝试按最低价格的房间,升序和降序排序。

在我的结果中,我还显示了酒店的最低价格。我可以用这个成功地按价格排序

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

但由于我想始终显示最低价格,如果我想从高到低排序,这不起作用,因为它按酒店的最高房价排序。

有没有办法按酒店最低房价排序?如果我尝试按顺序订购,MIN(rooms.price) desc则会收到错误消息。

4

1 回答 1

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 %>
于 2013-07-07T20:39:31.363 回答