Rails排序同时考虑两个属性

时间:2016-01-04 17:00:58

标签: ruby-on-rails activerecord

我有一个名为List的模型,每个列表都有很多Car。每辆车都有一个司机,可以是注册司机。这是检索驱动程序名称的方式

Car Draper Decorator:
...
def driver_name
  if driver.present?
    driver.name
  else
    model.driver_name
  end
end

好的,现在我想根据汽车司机的名字订购一个List。这意味着当运行List.cars时,将返回按驱动程序名称排序的列表,同时考虑已注册和未注册。

1 个答案:

答案 0 :(得分:0)

您可以使用ruby的排序方法 - 而不是活动记录:

cars = Car.all
sorted_cars = cars.sort{|a,b| a.decorate.driver_name <=> b.decorate.driver_name }

这将使用您定义的装饰器方法进行排序。