Re: ActiveRecord を SQLObject っぽく

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したあとぐらいに書いたらちょうど良かった。