0

私のデータベースには「スパイン番号」があり、それらで並べ替えたいと思います。

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

これは私の1つのコントローラーですが、スパインは001,002,003の代わりに1、2、3 ... 100、101などになります。このような簡単なクラスはおそらく次のようになります。

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

しかし、私はそれを知りません。助けてくれてありがとう。

PSも、なぜ最近、rails wikiが頻繁にダウンしているのですか?

4

1 に答える 1

4

クエリにSQLORDERBY句を適用するFilm.order( "id DESC")(または "ASC")メソッドを使用する必要があります。デフォルトでは、少なくともMySQLでは、レコードは主キー列でソートされます。

これで質問に答えられない場合は、データベースに関する詳細情報を提供してください。

編集 はい、わかりました。頭に浮かぶ唯一のことは、スパイン番号列にある種の文字列データ型を使用しているということです。この場合、値はこのように文字ごとに比較されるため、この種の並べ替えは理にかなっています。

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

戻る

  • 054
  • 1
  • 143
  • 25

一方、整数や浮動小数点数などの数値は、個別のバイトではなく、実際の値によって比較されます。

したがって、脊椎番号のデータ型を整数に変更するための移行を作成する必要があります。

于 2011-02-23T02:23:26.950 に答える