Ruby - method_missing

Je suis en train de mettre en œuvre un method_missing pour la conversion de dollars à d'autres monnaies, comme en fait 5.dollars des rendements de 5, 5.yen aurait rendement de 0,065 5.euro 6.56 et ainsi de suite. Ce que je peux faire maintenant. Maintenant, j'ai besoin de le mettre en œuvre mais faire 5.de dollars.(:yen) par exemple.

C'est ce que j'ai en ce moment:

class Numeric
  @@currencies = {'yen' => 0.013, 'euro' => 1.292, 'rupee' => 0.019}
  def method_missing(method_id)
    singular_currency = method_id.to_s.gsub( /s$/, '')
    if @@currencies.has_key?(singular_currency)
      self * @@currencies[singular_currency]
    else
      super
    end
  end
end

Quelqu'un peut-il expliquer comment je peux faire cela?

PS: je préfèrerais que vous me donnez pas le code, mais une explication, afin que je puisse déterminer sur mon propre comment il est fait.

Je suis en train de travailler sur le même problème, et qui est assez intéressant ce post est maintenant dans google top 10 des hits pour "ruby method_missing".

OriginalL'auteur 8vius | 2012-03-11