Railsのmodelをカスタマイズしてメソッドの呼び出しにオプションを追加する  [rails]  [tips]

Railsである特定のmodelの検索(find)時に必ずsortをかけたいというような場合には、modelのfindをカスタマイズするのが便利。


class Hoge < ActiveRecord::Base
  class << self
    alias_method :find_org, :find
    def find(*params)
      options = {:order => "fuga desc"}
      options.update(params.last.is_a?(::Hash)? params.pop : {})
      find_org(*params.push(options))
    end
  end
end

もとのfind(find_org)を呼び出すときに、paramsを’*‘でもとに戻すの忘れてえらい目にあった。