【发布时间】:2010-10-28 13:56:21
【问题描述】:
如果这个问题之前已经回答过或者很明显,我深表歉意...在这里和 Goog 上进行了一些搜索,但找不到答案。
我希望按价格对一组提供者进行排序,以及它们是否是首选提供者? (对或错)
例如在array p of Providers...
p1.price == 1, p1.preferred_provider? == false
p2.price == 2, p2.preferred_provider? == true
p2.price == 3, p3.preferred_provider? == true
我想 p.sort_by 并得到:
[p2 p3 p1]
内测
p.sort_by {|x| x.preferred_provider?, x.price }
不起作用并得到...
undefined method `<=>' for false:FalseClass
对解决此问题的更好方法有什么建议吗?
【问题讨论】:
-
实际上,您几乎拥有它:p.sort_by {|x| [x.preferred_provider? ? 0 : 1, x.price]} .
-
啊...很好。重构候选人。谢谢。
标签: ruby-on-rails ruby sorting boolean enumerable