我在列上有一系列具有以下值的模型对象:
我想查询数据库并以字母数字顺序获取结果。我想按以下顺序获得结果:
相反,我获得了以下顺序:
有什么聪明的方法可以直接通过活动记录直接达到该结果?
答案 0 :(得分:1)
在这里,我将您的示例数据重新声明为数组:
example_array = %w{2018-A-1 2018-A-10 2018-A-2 2018-A-100 2018-A-11 2018-B-1 2018-B-10 2018-B-2 2018-B-100 2018-A-11}
对我来说,这还不是很清楚。如果您尝试仅根据最后一个连字符后面的数字进行排序,则应该可以:
example_array.sort_by{|e| e.split("-").last.to_i }
如果您还打算在最终数字前加上字母,也许这就是您想要的:
example_array.sort_by{|e| [e.split("-")[-2], e.split("-").last.to_i] }