Ruby 什么';s singleton_class.send&;这个元编程示例中的singleton_class.class_eval? 类产品

Ruby 什么';s singleton_class.send&;这个元编程示例中的singleton_class.class_eval? 类产品,ruby,metaprogramming,Ruby,Metaprogramming,我想了解在本例中如何定义set\u table\u name 为什么这里需要singleton\u class.send 为什么在singleton\u class而不是在self上调用class\u eval?使用“singleton\u class”的原因是,您不想修改ActiveRecord::基类,而是要修改产品类 有关元编程和单例类的更多信息,请点击此处:此已灭绝的存档版本\u为什么链接: class Product < ActiveRecord::Base set_table

我想了解在本例中如何定义
set\u table\u name

为什么这里需要
singleton\u class.send

为什么在
singleton\u class
而不是在
self
上调用
class\u eval

使用“singleton\u class”的原因是,您不想修改ActiveRecord::基类,而是要修改产品类


有关元编程和单例类的更多信息,请点击此处:

此已灭绝的存档版本\u为什么链接:
class Product < ActiveRecord::Base
 set_table_name 'produce'
end

module ActiveRecord
  class Base
    def self.set_table_name name
    define_attr_method :table_name, name
  end

  def self.define_attr_method(name, value)
    singleton_class.send :alias_method, "original_#{name}", name
    singleton_class.class_eval do
      define_method(name) do
        value
      end
    end
  end
end