メタプログラミングRuby 第8章 ActiveRecord の中身 その1

メタプログラミングRuby

メタプログラミングRuby

第8章では ActiveRecord の動的属性と動的ファインダについてソースコードを中心に見ていくそうです。今日は動的属性。

  • method_missing による「ゴーストメソッド」の一種
    • private method の呼び出しだったら例外にする(迂回を禁止)
    • 属性のアクセサは最初に呼ばれた時に定義して次回からは method_missing を使わない(パフォーマンス上優れている)
    • primary_key な属性などその他の属性は動的なまま
    • メソッドの種類を判定して「動的ディスパッチ」で呼び出す
  • method_missing でメソッドをフォローしているぶん respond_to? にも追加。前も書きましたが最近の 1.9 なら respond_to_missing? で定義するほうがいいです。

やはり実例となると魔術の密度が濃くなっているようです。次は動的ファインダのところです。