2017-04-12 67 views
3

我定義了一個輔助方法: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 

一個一流的呼叫基本包括它,並用它從基地的子類:在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方法的基類,但我想知道爲什麼,當我包括helper方法不起作用?我錯過了什麼?

回答

5

您正在使用include,這使得current_segment在包括類的實例方法而你所需要的,是一個類實例方法(單法)。爲了實現它,你應該使用extend

module EnumData 
    class Base 
    extend MembersHelper 
    end 
end 
相關問題