我的模型Widget.rb有include ApplicationHelper
,我的实例方法使用application_helper.rb中定义的任何方法都没有问题
但是,当我尝试在我的任何类方法中使用其中一个辅助方法时,例如
def self.send_broadcast(guid)
track_guids(guid) # defined in application_helper.rb
end
我收到No Method错误。
是否有允许在类方法中使用ApplicationHelper方法的秘密握手?
答案 0 :(得分:2)
ApplicationHelper
只是一个模块:
module ApplicationHelper
def track_guids(something)
end
end
class Widget
extend ApplicationHelper
def self.send_broadcast(guid)
track_guids(guid)
end
end
现在您应该可以从类方法访问模块方法。我不确定你是否可以扩展并包含相同的模块但是......不确定那是做什么的。
编辑添加:
如果您尝试扩展并将相同的模块包含在课程中,我不确定会发生什么。使用extend
,您将获得包含在类级别的模块,include
它包含在实例级别。如果你同时做它们,它可能会给你类和实例的方法......或者它可能会死得很厉害。试一试?
答案 1 :(得分:-1)
我不认为你可以访问实例方法,除非self是一个实例。您可以创建Widget的实例并从中调用类方法,或者您可以尝试直接从模块中调用方法。