【发布时间】:2016-10-20 21:17:53
【问题描述】:
我刚刚学习 Ruby 并开始使用数组。我有一个看起来像这样的数组:
easyStats = [<SampleArray: @id=0, @stats=#<OpenStruct total_sessions_played=244, total_sessions_lost=124>>,
<SampleArray: @id=1, @stats=#<OpenStruct total_sessions_played=204, total_sessions_lost=129>>,
<SampleArray: @id=2, @stats=#<OpenStruct total_sessions_played=2, total_sessions_lost=4>>]
我可以按 id(整数)属性对数组进行排序:
easyStats.sort_by(&:id)
但是,我想做的是通过 OpenStruct 对象的键对数组进行排序,我尝试了以下选项,但出现了不同的错误:
easyStats.sort_by(&:stats)
错误:OpenStruct 与 OpenStruct 的比较失败
easyStats.sort_by(&:stats[:total_sessions_played])
错误:没有将 Symbol 隐式转换为 Integer
easyStats[:stats].sort_by(&:total_sessions_played)
错误:没有将 Symbol 隐式转换为 Integer
我已经看到了有关如何对仅包含一个 OpenStruct 对象的数组进行排序的解决方案,我想我理解了 - How to sort a ruby array by two conditions
有人可以告诉我如何按此示例中的 OpenStruct 对象的任何键进行排序(带有 Integer 和 OpenStruct 对象的数组)吗?
【问题讨论】:
标签: ruby-on-rails arrays ruby sorting ruby-on-rails-4