我有一个module Helper存在的in app/models/concerns/helper.rb

module Helper
  def func
    return ['A', 'B', 'C']
  end
end


我有一个NewService类别,该类别存在于app/services/pqr/new_service.rb

module PQR
  class NewService < ApplicationService
    include Helper
    @@results = func

    def self.another_func
      if @@results.blank?
        @@results = func
      end
    end
  end
end


调用函数时:PQR::NewService.another_func
我收到错误消息:(undefined local variable or method func for PQR::NewService:Class)

Ruby version - 2.5.3
Rails version - 5.2.3

最佳答案

您正在从类范围内调用func;您为什么希望可以从那里访问实例范围的方法?这是您代码的MCVE

class Foo
  def func; end # instance method
  func          # class scope
end


为了使func可以访问,应该在类级别使它可用。这意味着,您应该将您的关注点包含在singleton_classPQR中。

人为的例子:

module Foo
  def func; puts "YO"; end
end

class Bar
  class << self
    include Foo
  end

  func
end

关于ruby-on-rails - 来自Rails类内部模块的未定义函数错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58534128/

10-09 06:50