我在 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: undefined method `logger' for - Service::MyService:0x007fdffa0f23a0
Service::MyService.new.logger
我做错了什么?我正在使用 Rails 4.0.2
。
最佳答案
您将记录器方法定义为类方法,而不是普通方法。这应该有效:
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
关于ruby-on-rails - 使用 ActiveSupport::Concern 的 Rails mixin 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20371828/