我有一个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_class
的PQR
中。人为的例子:
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/