Rails动态方法名称

时间:2016-06-24 05:07:17

标签: ruby-on-rails ruby

我希望拥有动态方法名称,例如usd_to_eur eur_to_usd

我有currencies = ['uah','rur','usd','eur']并希望将其混合

我尝试使用define_method但不确定如何正确执行此操作。

1 个答案:

答案 0 :(得分: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种方法。 E.g:

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