0

我的数据库有“脊椎编号”,我想按它们排序。

@films = Film.all.sort{|a,b| a.id <=> b.id }

那是我的一个控制器,但是刺去 1, 2, 3 ... 100, 101 等而不是 001,002,003... 所以排序不正常。可能有一个简单的类,例如:

@films = Film.all.sort{|a,b| a.id.abs <=> b.id.abs }

但我不知道。谢谢您的帮助。

PS 还有,为什么最近 Rails wiki 经常宕机?

4

1 回答 1

4

您应该使用将 SQL ORDER BY子句应用于查询的Film.order("id DESC") (或 "ASC") 方法。默认情况下,记录按主键列排序,至少在 MySQL 中是这样。

如果这还没有回答您的问题,请提供有关您的数据库的更多信息。

编辑 是的,我明白了。唯一想到的是您正在为脊椎编号列使用某种字符串数据类型。在这种情况下,这种排序是有意义的,因为值是按字母顺序比较的 char 到 char 像这样

1| |
0|5|4
2|5|
1|4|3

这将返回

  • 054
  • 1
  • 143
  • 25

而诸如整数或浮点数之类的数值是通过它们的实际值而不是单独的字节进行比较的。

因此,您应该创建一个迁移以将脊椎编号的数据类型更改为整数。

于 2011-02-23T02:23:26.950 回答