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
Je voudrais comprendre comment set_table_name
est défini dans cet exemple. Pourquoi faut-il utiliser singleton_class.send
ici?Quel est le but de singleton_class.send & singleton_class.class_eval dans cet exemple de métaprogrammation?
Et pourquoi class_eval
est-il appelé singleton_class
au lieu de self
?
version archivée de ce lien _why éteint: http://web.archive.org/web/20090615044849/http://whytheluckystiff.net/articles/seeingMetaclassesClearly .html – jordanpg
Et la version non-archivée ici: http://dannytatom.me/metaid/ – alfasin