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を作ってこそ便利になる気がする。
-
Rails2.3だとscopedに続けてnamed_scopeのメソッドを呼び出すとエラーが出るらしく、injectの引数にはselfのみを渡すようにした。 ↩