ActiveRecord を SQLObject っぽく を読んだ。言ってたね。くまくまの人が。svn headにはこの機能入ってるの?
入ってないとしても、くまくまの人が既に書いてそうだけど、面白そうなので自前で書いてみた。5分じゃ無理だった。10分掛かった。
ActiveRecord::Base.class_eval do class << self def inherited_with_sqlobjish(subclass) inherited_without_sqlobjish(subclass) Kernel.class_eval do define_method(subclass.name) {|*args| subclass.find(*args) } end end alias_method :inherited_without_sqlobjish, :inherited alias_method :inherited, :inherited_with_sqlobjish end end
Modelクラス群が定義される前に書かないといけない。config/environment.rbがboot.rbをrequireしたあとぐらいに書いたらちょうど良かった。