2012/05/29

[rails]ActiveRecordのソート

ActiveRecordには、ソートに関するメソッドが3つあります。

  • order
  • reorder
  • reverse_order

order

指定した文字列、もしくはシンボルでソートします。


Sample.order(:created_at)                 #=> ORDER BY created_at
Sample.order("created_at")                #=> ORDER BY created_at
Sample.order("created_at ASC, name DESC") #=> ORDER BY created_at ASC, name DESC

reorder

デフォルトスコープで指定したソート順を上書きし、reorderで指定したソート条件を適用します。


class Post < ActiveRecord::Base
  ..
  ..
  has_many :comments, :order => 'posted_at DESC'
end
 
Post.find(10).comments.reorder('name')

reverse_order

指定したソートの昇順・降順を入れ替えてソートします。 (以前こっちに書きましたが・・)


Sample.order(:created_at).reverse_order #=> ORDER BY created_at DESC

別段これは!ということは書いていませんが、reorderの存在を最近知ったので、 ちょっとまとめてみました。

そういえば、第4版が出ていましたね。

2013/11/01 追記。
Rails4におけるソートの新機能について、Rails4からActiveRecordのorderにハッシュを渡せるようなった。に書きました。

0 件のコメント: