bir*_*ird 3 ruby ruby-on-rails
我定义了一个辅助方法: MembersHelper
module MembersHelper
def current_segment
Segment.where(current: true).first
end
end
Run Code Online (Sandbox Code Playgroud)
然后将它包含在类调用Base in app/service/enum_data/base.rbfile中
module EnumData
class Base
include MembersHelper
end
end
Run Code Online (Sandbox Code Playgroud)
并在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
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个错误
undefined local variable or method 'current_segment' for EnumData::GetByCategory:Class
我通过将current_segment方法移动到Base类来修复它,但我想知道为什么当我包含该帮助方法时它不起作用?我错过了什么?
您正在使用include,这使得current_segment一个实例方法在包括类,而你所需要的,是一个类的实例方法(单法).为了实现它,你应该使用extend:
module EnumData
class Base
extend MembersHelper
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2332 次 |
| 最近记录: |