ruby-on-rails - 为什么这些方法不通过define_method在运行时动态定义?

标签 ruby-on-rails ruby metaprogramming

因此,我在 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/

相关文章:

ruby - 定义 "method_called".. 如何制作一个钩子(Hook)方法,每次调用类的任何函数时都会调用该方法?

javascript - Coffeescript/Javascript 在服务器上不工作

ruby-on-rails - 没有路由匹配 { :action= >"show", :controller= >"posts"} 缺少必需的键:[:id]

ruby - 如何在 Ruby 中重置类定义?

ruby-on-rails - Rails 查询 : find first record by id and select only specified attributes for that record

ruby-on-rails - 如何将字符串评估/常量化为方法,然后将参数传递给它

java - 是否可以在注释处理环境中获取包中的所有 TypeElement?

ruby-on-rails - 格式化 text_field 助手?

ruby-on-rails - 如何修复 "sqlite3.h is missing"?

html - 使用 jbuilder 返回未转义的 html