【发布时间】:2015-02-12 09:05:27
【问题描述】:
我有一个这样的哈希(它是 group_by 方法的结果):
{nil => [#<ActiveRecord id ..., ...], #<ActiveRecord ...> => [#<ActiveRecord id ..., ...], ...}
我需要对其进行排序,以便 nil 元素成为第一个,然后是所有其他 ActiveRecord 对象。我怎样才能做到这一点?
谢谢
附言
- 是的,我需要一个 ActiveRecord 对象作为键(不是符号或其他)
- 由于复杂的 SQL 请求,我无法在数据库中执行订单。
我只需要通过键对哈希进行排序。
【问题讨论】:
-
以下是有关如何改进此问题的建议。我提供它们主要是为了帮助您将来编写问题。 1)当你给出一个例子时,让它完整并给对象命名。 2)使示例尽可能小和简单。在这里,哈希中的大多数对象都是实例这一事实与问题无关,因此请使它们更简单(且可排序),以便读者可以在测试和比较代码时使用它。在这里你可能会使用字符串。 (续)
-
(续) 3. 当你举一个例子时,总是给出你想要的输出。所以这里可能是
hash = { nil=> ["dog", "cat"], "pig"=>["zebra", "sloth"], "groundhog"=>["toad", "ladybug"] }之类的东西(尽管我没有仔细阅读你的问题,不知道这是否有意义)。我在您对@Stefan 的回答的评论中看到您正在对ActiveRecord对象的字符串表示进行排序。我不认为那些回答的人希望你这样做,因为这样的对象不会响应<=>。
标签: ruby-on-rails ruby sorting hash