因此,我在 Rails 4.2 应用程序中有以下类,它使用 define_method 在运行时动态定义类方法。当我启动 Rails 控制台时,它说 Dynamic.kite_flying 和 Dynamic.tail_flying 方法不存在。当我在 Dynamic 类上调用这些方法时,是否缺少定义这些方法的某些内容?
class Dynamic
def self.hello_world
puts "hello"
end
["kite", "tail"].each do |arg|
define_method("self.#{arg}_flying") do |word_name, list|
puts "hello some dynamic #{arg}_flying"
end
end
end
最佳答案
define_method
不定义类方法,它定义实例方法。您希望 define_singleton_method
在上面的代码中定义类方法。
关于ruby-on-rails - 为什么这些方法不通过define_method在运行时动态定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29996842/