4
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
我想了解set_table_name
在此示例中如何定義。這個元編程示例中的singleton_class.send和singleton_class.class_eval的用途是什麼?
爲什麼在這裏需要singleton_class.send
?
爲什麼class_eval
調用singleton_class
而不是self
?
這種滅絕_why鏈接的存檔版本:http://web.archive.org/web/20090615044849/http://whytheluckystiff.net/articles/seeingMetaclassesClearly .html – jordanpg 2012-01-28 23:35:19