当某些对象具有nil属性时,对哈希数组进行排序

tho*_*nch 2 ruby sorting hash

我有一个哈希数组,其中键是用户对象(这是因为我正在按用户对搜索结果进行分组,如下所示:) #<User:0x007ffa3d570f00> => ["taco","pizza","unicorn"].

我希望能够通过User对象属性对哈希数组进行排序,如下所示:

search_results.sort_by{|item| item[0].age} #item[0] = User object
Run Code Online (Sandbox Code Playgroud)

但是,这会ArgumentError: comparison of NilClass with Integer failed在遇到年龄为零的第一个用户时抛出.我尝试unless user.age.nil?sort_by块中添加一个,但这没有帮助.

有任何想法吗?

And*_*all 12

nil对象视为其他东西,或许0Float::INFINITY

search_results.sort_by { |user| user.age || 0 }
Run Code Online (Sandbox Code Playgroud)

既然如此nil.to_i == 0,您还可以这样做:

search_results.sort_by { |user| user.age.to_i }
Run Code Online (Sandbox Code Playgroud)