named_scopeの自動生成+お手軽検索

@ukstudioさんの「scopeでお手軽検索」 をRails2.3向けに少し修正^1しつつ、カラムごとに一致検索をするようなnamed_scopeを自動生成するようにフック部分にしかけをした。

例えばnameカラムとageカラムを持ったUserモデルについて、

class User < ActiveRecord::Base
  extend Searchable
end

とすると、次のような感じでカラムの条件で簡単に検索が可能になる。

User.name("jsmith").first #=> User named jsmith
User.search(:name => "jsmith", :age => 20..30)

追記

これだけだとwhereの導入された3.0では記法的なあまりメリットはないかもしれない。2.x系なら:conditionsをキーとしたハッシュが不要になるというメリットはあるけど。

やっぱり独自のnamed_scopeを作ってこそ便利になる気がする。