我有几个型号,城市,酒店和房间。城市has_many
酒店,酒店has_many
间客房。每个房间都有价格。我试图按最低价格房间排序,asc和desc。
在我的结果中,我也显示了酒店的最低价格。我能用这个
成功地按价格排序 City.first.includes(hotel: :rooms).order("rooms.price asc")
但是因为我想要始终显示最低价格,所以如果我想从高到低排序,这是行不通的,因为它按酒店的最高房价排序。
有没有办法按酒店最低房价排序?如果我尝试按MIN(rooms.price) desc
订购,我会收到错误消息。
答案 0 :(得分: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 %>