我有一个使用Struct创建的Job类。我最近添加了名为Group
的ActiveRecord模型,我需要在此类的Group
方法中重置此perform
模型上的计数器,如下所示:
module Jobs
class ProcessV1 < Struct.new(:payload, :reporting_ip)
def perform
Group.reset_counters 1, :computers
end
end
end
但这会引发错误:
undefined method "reset_counters" for Etc::Group:Class
在一些快速的谷歌搜索中,我已经了解到,显然Group
是Etc的一个子类,它以某种方式与Struct相关。如果没有重命名我的Group
模型,有没有办法解决这个问题?
我尝试了以下内容来进一步指定模型位置
ApplicationName::Application::Group
摆脱了我的Etc :: Group错误,但后来我得到了:
warning: toplevel constant Group referenced by ApplicationName::Application::Group
答案 0 :(得分:1)
如果您确实希望顶层组不变,请尝试::Group
。这明确告诉Ruby你想要顶级常量,而不是走向模块树来找到Group
常量。