如何在Rails中动态调用或调用类?

时间:2012-07-15 07:42:47

标签: ruby-on-rails ruby class dynamic invoke

假设我可以构造一个与现有类匹配的字符串,我该如何调用它?

例如,我有几个类:

  • MyClass1的
  • MyClass2
  • MyClass3

我想通过构造一个与其名称匹配的字符串来动态调用它们。如果他们都有方法“方法”,我该怎么办?

(1..3).each do |n|
  ("MyClass"+n).methods
end

2 个答案:

答案 0 :(得分:17)

constantize符合要求。您可以阅读更多相关信息here。在你的情况下,它将是这样的:

(1..3).each do |n|
  "MyClass#{n}".constantize.methods
end

答案 1 :(得分:-3)

你也可以 -

(1..3).each {|n| eval "MyClass#{n}.methods"}