Arrays 使用零值和多个参数按降序对ruby数组排序

Arrays 使用零值和多个参数按降序对ruby数组排序,arrays,ruby,sorting,null,Arrays,Ruby,Sorting,Null,首先,我发现了一些帖子可以用可能的nil值对值进行排序,其他帖子可以用decenting进行排序,但我没有找到这两种方法的解决方案 我就在这里: @records = @records.to_a.sort_by do |r| [-r.optimized_all_count, [r.year ? 1 : 0, r.year]] end 这非常有效,但我希望“年”比较值下降。我测试了这个: -[r.year ? 1 : 0, r.year] 但符号“-”不适用于零值。我也试过了a.reverse

首先,我发现了一些帖子可以用可能的nil值对值进行排序,其他帖子可以用decenting进行排序,但我没有找到这两种方法的解决方案

我就在这里:

@records = @records.to_a.sort_by do |r| [-r.optimized_all_count, [r.year ? 1 : 0, r.year]] end
这非常有效,但我希望“年”比较值下降。我测试了这个:

-[r.year ? 1 : 0, r.year]
但符号“-”不适用于零值。我也试过了
a.reverse

理想情况下,如何从降序(并保持
-r.optimized\u all\u count
作为第一个排序参数)获得年份参数:

2020, 2018, 2017...nil, nil, nil.
谢谢

试试这个:

@records = @records.to_a.sort_by do |r| [-r.optimized_all_count, [r.year ? 0 : 1, r.year ? -r.year : nil]] end

试试这个:

@records = @records.to_a.sort_by do |r| [-r.optimized_all_count, [r.year ? 0 : 1, r.year ? -r.year : nil]] end

不清楚是否需要
。\u a


不知道是否是代码> tooa。——偶然有一个数据库查询涉及到“ToaA”不是必需的,是的,阿纳尔数据库查询。您考虑将排序委托给数据库吗?<代码> @记录。Toaa——是否有数据库查询?不需要“ToaA”,是的,它是AR数据库查询。您是否考虑过将排序委托给数据库?它工作得很有魅力。谢谢你,丹尼尔!它就像一个符咒。谢谢你,丹尼尔事实上,不需要“a”。您的解决方案也很有效,而且更短。谢谢,实际上不需要“感谢”。您的解决方案也很有效,而且更短。谢谢