皆さん、
この形式のデータを持つモデルに文字列属性 ( name ) がある状況があります。
- ダン01
- ジョエル02
- けん01
- raol01
私がやりたいのは、クエリと名前による並べ替えですが、文字列を逆の順序で使用するための順序が必要です。つまり、 dan01 は10nadと見なされ、Railsでこれを行う最善の方法は何か疑問に思っています。
皆さん、
この形式のデータを持つモデルに文字列属性 ( name ) がある状況があります。
私がやりたいのは、クエリと名前による並べ替えですが、文字列を逆の順序で使用するための順序が必要です。つまり、 dan01 は10nadと見なされ、Railsでこれを行う最善の方法は何か疑問に思っています。
パフォーマンスのためにデータベース層でこれを行う必要があるため、これは使用しているデータベースに依存します。実際、ここで実際に達成しようとしていることを再考したいと思うかもしれません。これが本当にあなたが探している答えであるとは思えないからです。-ジェダイマインドメルド-
MySQL を使用していると仮定すると、モデルが の場合Person
、クエリは次のようになります。Person.order('REVERSE(name)')
ルビーでそれを行うこともできますPerson.all.sort_by{|p| p.name.reverse}
が、私はそれをお勧めしません。
あなたがしていることの完全なコンテキストを知らなくても、ソート順またはそれらの行に沿った何かである2番目の整数列を保存したいと思うでしょう。
目の前に MySQL DB はありませんが、次のようなことができるはずです。
Foo.order('REVERSE(name)')
上記は Postgres で機能し、 http: //dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_reverse に従って MySQL でも機能するはずです。