ruby-on-rails - 在 Rails 中对数字字符串进行排序

标签 ruby-on-rails ruby postgresql

首先,一个警告:我是 Ruby 和 Rails 的新手。

我的模型中有一个字符串字段,它引用了我的客户端现有的离线命名方案,这些方案是用小数点分隔的整数。所以“1.1”和“5.10.1.5”等

我想使用 Rails 的默认范围排序,但仅按此字段进行正常排序会导致如下问题:

1 1.10 1.2 1.3

很明显,我希望 1.10 排在最后。谁能指出我正确的方向?

我正在使用 Rails 3.2.10 和 Postgres 9.1.4。

最佳答案

您真的不想在 ruby​​ 中进行这种排序,因为您将失去链接作用域、对结果进行分页、正确使用 limit 等的能力。

这是 Postgres 特有的,但应该完全按照您的意愿进行。

default_scope order("string_to_array(num, '.', '')::int[]")

SQL Fiddle

Postgres docs

关于ruby-on-rails - 在 Rails 中对数字字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15750722/

相关文章:

ruby-on-rails - "cucumber"命令和 "rake cucumber"命令有什么区别?

ruby-on-rails - 从 Rack 中间件更改 Rails 参数哈希

MYSQL迁移到postgreSQL问题

postgresql - 我可以在哪里放置 SQL 代码以在 AWS Data Pipeline 中删除表?

javascript - Jquery 和 Ruby - 切换功能不起作用

ruby-on-rails - Rails - Refile Gem - 未定义的方法 `file_id_will_change!'

ruby - 使用 rspec 测试成功返回的线程数

ruby - 为 REST API 创建动态 Ruby OpenAPI/Swagger 客户端的助手

sql - 当每行包含下一行的 id 时,对 SQL 请求进行排序

ruby-on-rails - rails 正在从路线而不是公用文件夹加载