15

[コースラのSAASコースに従って]レールを学び、ActiveRecordを使用して単純なムービーテーブルを操作しています。

タイトルを並べ替えてすべての動画を表示したい。大文字と小文字を区別せずにソートしたいと思います。

私はこのようにしてみました:

Movie.all(:conditions => ["lower(title) = ?", title.downcase],:order => "title DESC")
=>undefined local variable or method `title' for #<MoviesController:0xb4da9a8>

lower(title) を認識しないと思います。

これは大文字と小文字を区別しないソートを実現するための最良の方法ですか?

ありがとう!

4

4 に答える 4

21

使用するwhereかしないかall

Movie.where("lower(title) = ?", title.downcase).order("title DESC")

しかし、その種類はよくわかりません。ここでは、下のタイトルが に等しいすべての映画を取得しますtitle.downcase。すべてが等しいのですが、どのように並べ替えることができますtitle descか?

すべての映画を小文字のタイトルで逆アルファベット順に並べ替えるには:

Movie.order("lower(title) DESC").all
于 2012-08-04T04:57:52.633 に答える
9

これを行う必要があります:

Movie.order("lower(title) DESC").all
于 2012-08-04T05:01:19.670 に答える
3

MySQL で毎回大文字または小文字の操作を実行すると、非常にコストがかかります。

私がお勧めするのは、title列と列を持つことtitle_lowerです。title_lowerこのように、ソートのたびに MySQL が上位または下位を実行することなく、列の大文字と小文字を区別せずに簡単に表示およびソートできます。

両方または少なくともtitle_lower.

于 2012-08-04T04:58:00.370 に答える