2011-11-11 38 views
0

几个字段我有这两个表:排序方式使用Rails助手

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| %> 

我怎样才能做到呢?

谢谢youuu !!!

=)

例子:

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

这应该做的伎俩:

: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