按以数字开头的字符串排序 - ActiveRecord

问题描述

我正在构建 Rails 应用程序并尝试按以数字开头的字符串列对数据库中的记录进行排序。
怎么先按号码下单?
我宁愿按 sql 顺序排序,也不愿按 ruby​​ 方法排序。有什么办法吗?

expected order
1.record1
2.record2
10.record10
present order
1.record1
10.record10
2.record2

解决方法

您可以 order by field + 0field 的数据类型隐式更改为数字:

Model.order("field + 0 ASC")

# similar `string`.to_i in Ruby
# `1.record1`   => 1
# `10.record10` => 10