我在lib
文件夹中定义了以下模块/类
module Service::Log
extend ActiveSupport::Concern
module ClassMethods
def logger
Rails.logger
end
end
end
class Service::MyService
include Service::Log
end
当我尝试通过对象实例调用logger
方法时,我会收到一条错误消息-NoMethodError:Service::MyService:0x07fdffa0f23a0 的未定义方法"logger"
Service::MyService.new.logger
我做错了什么?我使用的是Rails 4.0.2
。
您将logger方法定义为类方法,而不是普通方法。这应该有效:
module Service::Log
extend ActiveSupport::Concern
def logger
Rails.logger
end
end
class Service::MyService
include Service::Log
end
Service::MyService.new.logger
之前定义方法的方式允许您直接在类上使用logger方法,例如:
Service::MyService.logger