我有两张桌子:
room_types
+ id
+ n_adults
+ n_children
rooms
+ id
+ name
+ hotel_id
+ room_type_id
我想列出n_adults ASC订购的所有房间。但是,如果两个房间具有相同的n_adults值,我想通过n_children ASC对它们进行排序。
到目前为止,我有这个:
<% Room.all(:conditions => ['rooms.hotel_id = ?', @hotel_id], :joins => :room_type, :order => "room_types.n_adults ASC").each do |room| %>
我该如何实现?
谢谢你!
=)
示例:
room 1 Adults: 1 Children: 0
room 2 Adults: 1 Children: 1
room 3 Adults: 2 Children: 1
room 4 Adults: 3 Children: 0
room 5 Adults: 3 Children: 1
room 6 Adults: 3 Children: 2
答案 0 :(得分:0)
这应该可以解决问题:
:order => "room_types.n_adults ASC, room_types.n_children ASC"
它生成一个SQL ORDER BY子句:
ORDER BY room_types.n_adults ASC, room_types.n_children ASC
如果您使用的是Rails 3或更高版本,您可能希望使用较新的查询API,例如:
Room.joins(:room_type).where('rooms.hotel_id = ?', @hotel_id).order("room_types.n_adults ASC")
请参阅http://guides.rubyonrails.org/active_record_querying.html