【发布时间】:2012-04-20 00:29:55
【问题描述】:
我有一个哈希数组,其中键是用户对象(这是因为我按用户对搜索结果进行分组,如下所示:#<User:0x007ffa3d570f00> => ["taco","pizza","unicorn"])。
我希望能够按用户对象属性对哈希数组进行排序,如下所示:
search_results.sort_by{|item| item[0].age} #item[0] = User object
但是,当遇到第一个年龄为 Nil 的用户时,它会抛出 ArgumentError: comparison of NilClass with Integer failed。我尝试在 sort_by 块中添加 unless user.age.nil?,但这没有帮助。
有什么想法吗?
【问题讨论】:
-
等等。如果它是一个哈希数组,那么每个元素都是一个哈希,而不是一个用户。哈希没有#age 方法。所以我很困惑 - 你想完成什么?您想要每个 Hash 的哪个键的#age?
-
@MarkReed 嗯,好点,虽然错误似乎暗示它正在获取
age(因为它是一个整数),否则它会因NoMethodError尝试调用而失败age. -
这告诉我你的 search_results 可能不是你想象的那样。你试过只是pp'ing吗?还是要求 search_results[0].class?
-
也许我解释得不够清楚,它是一个哈希数组,其中键是“用户”对象,值是数组。因此,“sort_by”方法。这是一种常见的模式