我正在嘗試執行自定義活動記錄宏。但它現在似乎不可能從它的塊內設置一個實例變量..這是我正在嘗試做的。如何從類方法設置實例變量?
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