我正在尝试执行自定义活动记录宏。但它现在似乎不可能从它的块内设置一个实例变量..这是我正在尝试做的。如何从类方法设置实例变量?
module ActiveRecord
class Base
def self.included(base)
base.class.send(:define_method, :my_macro) do |args|
# instance_variable_set for the model instance that has called this
# macro using args
end
end
end
end
我已经尝试过class_eval,instance_eval ..但似乎没有任何工作,或者我不怎么使用它们。
在此先感谢。
编辑:让我试着解释更好。我有一个类的方法。类的一个实例调用这个方法。现在,这个类方法应该指示实例为自己设置一个实例变量。
编辑 - 这是我想Ø使用宏
class MyModel < ActiveRecord::Base
my_macro(*args)
def after_initialize
# use the value set in the macro as @instance variable
end
end
嗯......除非Ruby重新定义了术语“类方法”,否则类方法的要点是没有实例? – delnan 2010-11-20 16:59:39
这就是我的想法。我感兴趣的是看看是否有办法告诉实例如何动态地添加自己的实例变量。 – 2010-11-20 17:12:39
@greg,@delnan:是的..我完全同意......但我想知道是否有一种方法告诉它的实例将实例变量添加到自己。 – ZX12R 2010-11-20 17:27:36