我有一个Foo
模型,它有很多属性,一个是:end_date
,一个是:start_date
,有时结束日期值为nil。
我想先按end_date
,然后按start_date
降序对这个数组排序,所有的end_date
,nil
值都应该排在第一位。
因此,如果我有四个对象:
- 对象
A
具有end_date
nil
和start_date
,日期为2021年1月, - 对象
B
具有end_date
nil
和start_date
,日期为2022年1月, - 对象
C
具有2022年12月的end_date
和2022年1月的start_date
, - 对象
D
具有2021年12月的end_date
和2021年1月的start_date
,
那么排序的顺序应该是[B, A, C, D]
,怎么做呢
3条答案
按热度按时间jfgube3f1#
gojuced72#
如果您可以执行SQL查询,那么下面的代码应该对您有效。
另一方面,如果您已经有了物化数组,则可以执行以下操作。
对end_date重复相同的过程
txu3uszq3#
使用#sort的单遍
a)使用块排序
B)将自定义比较方法添加到您的模型或模块中,然后执行以下操作