ActiveRecord查询排序

时间:2011-01-25 13:28:45

标签: ruby-on-rails ruby-on-rails-3

假设我有以下型号:

class Car < ActiveRecord::Base
  belongs_to :seat
  ...
end

class Seat < ActiveRecord::Base
  belongs_to :color
  ...
end 

class Color < ActiveRecord::Base
  attr_reader :name
  ...
end

如果我获得了汽车列表,并且我想通过color.name 订购汽车,那么如何编写订单查询?

class Car < ActiveRecord::Base
   belongs_to :seat
   ...
   def cars_order_by_color(car_ids)
       where(:id=>car_ids).order(?????) #HOW TO ORDER BY COLOR.name
   end   

 end

2 个答案:

答案 0 :(得分:1)

如果您在查询中使用joins,则可以按联接表(seatscolors)排序:

Car.joins(:seat => :color).order("colors.name")

答案 1 :(得分:0)

要按特定顺序从数据库中检索记录,您可以为查找调用指定:order选项。

 Car.order("color")

您也可以指定ASC或DESC:

 Car.order("color DESC")

有关查询的更多帮助,请查看此处:active_record_querying

希望这有帮助。

修改

您可以使用find_by_sql:

Car.find_by_sql("SELECT * FROM clients
  INNER JOIN orders ON clients.id = orders.client_id
  ORDER clients.created_at desc")

撰写适当的查询。