我定义了一个辅助方法:MembersHelper
module MembersHelper
def current_segment
Segment.where(current: true).first
end
end
然后将其包含在app/service/enum_data/base.rb
文件
module EnumData
class Base
include MembersHelper
end
end
并使用Base的子类:app/service/enum_data/get_all.rb
文件中的GetAll
module EnumData
class GetAll < Base
def self.call
reference_data = current_segment.entities.all
end
end
end
但我收到了错误
undefined local variable or method 'current_segment' for EnumData::GetByCategory:Class
我通过将current_segment
方法移动到Base类来修复它,但我想知道为什么当我包含该帮助方法时它不起作用?我错过了什么吗?
答案 0 :(得分:5)
您正在使用include
,这使得包含类中的current_segment
成为实例方法,而您需要的是类实例方法 (单身方法)。为了实现它,您应该使用extend
:
module EnumData
class Base
extend MembersHelper
end
end