假设我有以下型号:
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
答案 0 :(得分:1)
如果您在查询中使用joins
,则可以按联接表(seats
或colors
)排序:
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")
撰写适当的查询。