今更ながら、method_missingを使ってみる

ActiveRecordなんかでも活用されているmethod_missingを自分で実際に使ってみる。使用方法としては、Hashへのメソッド的アクセス。

class Hoge
  attr_accessor :params

  def method_missing(name, *args)
    if /^(.+?)=$/ =~ name.to_s
      @params[$1.to_sym] = args[0]
    else
      @params[name]
    end
  end #method_missing
end #Hoge

hoge = Hoge.new
hoge.params = {:foo => 'hogehoge', :bar => 'fugafuga'}
hoge.foo #=> 'hogehoge'
hoge.bar #=> 'fugafuga'
hoge.foo = 'piyopiyo'
hoge.params[:foo] #=> 'piyopiyo'
hoge.foo #=> 'piyopiyo'