我正在调试ActiveRecord模型中的一些回调。我想拥有一个全球可用的方法,如下所示:
logger.info("at end of ITEM calling check_status")
但是我希望有一个可以添加到任何模型类的通用版本。我正在考虑在初始化器/ my_initializer.rb中修改像ActiveRecord :: Base一样的猴子:
class ActiveRecord::Base
# this worked
def end_log_proof
logger.info("this should work")
end
def end_log(klass)
logger.info("at end of ( #{klass.name} )")
logger.info("calling #{klass.__method__}.upcase at file #{klass.__FILE__} line: #{klass.__LINE__}")
end
end
如果我这样打电话:
class Item < ActiveRecord::Base
after_save :my_callback
def my_callback
end_log_proof # this works
end_log(self) # ouptuts : "calling MY_CALLBACK at ...."
end
第二个失败了:
NoMethodError (undefined method `name' for #<Item:0x007feab6359e38>):
我正在尝试获取对调用上下文的引用 - 我如何使这个工作起作用?
THX