在同一模型中合并和排序两列

时间:2016-02-04 16:28:35

标签: ruby-on-rails activerecord

如果我有一个ActiveRecord模型,Foo,它有两个日期列,date_1和date_2,我想按两列中的后一列(后面的日期)进行排序,这将如何完成?答案将根据代码的简单性和使用的最少sql来判断。

类似的问题 Ruby or Rails sort on two/multiple date fields

我倾向于以下但我不知道是否有更好的方法。 经过测试的代码:

 Foo.select("CASE 
     WHEN date_1 > date_2 THEN date_1
     ELSE date_2
     END AS later_date, *").order("later_date desc")

1 个答案:

答案 0 :(得分:3)

尝试使用:

Foo.order('GREATEST(date_1, date_2) DESC')