按ID号排序数组

时间:2011-02-23 02:10:01

标签: ruby-on-rails sorting controllers

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

@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?

1 个答案:

答案 0 :(得分:4)

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

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

<强>被修改 是的,我确实看到了。我唯一想到的是你使用某种字符串数据类型作为脊椎数字列。在这种情况下,这种排序是有意义的,因为值可以像字母一样对char进行char比较

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

将返回

  • 054
  • 1
  • 143
  • 25

而数字值(如整数或浮点数)按实际值进行比较,而不是按单独的字节进行比较。

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