gpt4 book ai didi

ruby-on-rails - 使用 ActiveSupport::Concern 的 Rails mixins 不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 16:03:06 25 4
gpt4 key购买 nike

我的 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

您之前定义方法的方式允许您直接在类上使用记录器方法,例如:

Service::MyService.logger

关于ruby-on-rails - 使用 ActiveSupport::Concern 的 Rails mixins 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20371828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com