2016-06-24 10 views
2

は、私は私がcurrencies = ['uah','rur','usd','eur']を持っていると私はそれを正しく行う方法がわからdefine_methodでそれをしようではなく、それをRailsの動的メソッド名

をミックスしたいusd_to_eureur_to_usd

のような動的なメソッド名を持っていると思います。

+0

これらのメソッドの実際の本体にはほとんど依存しません。彼らは共通点がありますか? – mudasobwa

+0

共通ですが、私は '_to_'、' currency1_to_currency2'だと思っています – user

+0

私は_method bodies_について質問していました。 – mudasobwa

答えて

10
class MyClass 
    CURRENCIES = %w|uah rur usd eur| 
    CURRENCIES.permutation(2).each do |(c1, c2)| 
    define_method(:"#{c1}_to_#{c2}") do 
     puts "Hi, I am #{__callee__} method" 
    end 
    end 
end 

ここでは12のメソッドが定義されています。例:

MyClass.new.eur_to_usd 
#⇒ Hi, I am eur_to_usd method 
+1

'順列'クールtnx – user

+0

素晴らしい答え@mudasobwa – blnc