我有一个“hub and spoke”类关系模型,其中一个类是中心,它需要知道任意数量的辐条类。我正在设计Hub类作为gem的一部分,我希望辐条由该gem的用户定义。因此,我无法在集线器类中定义辐条,我必须将其留给用户来定义和注册辐条。我试过这个,没有运气:
# models/hub.rb
class Hub
@@spokes = []
def self.spokes
@@spokes
end
def self.register_spoke spoke
@@spokes << spoke
end
end
# models/spoke.rb
class Spoke
end
Hub.register_spoke 'Spoke'
如果您只是运行它,这是有效的,但我希望在Rails应用程序中的加载时设置此关系,我似乎无法使其工作。帮助
答案 0 :(得分:2)
你提到你想让Hub成为gem的一部分。在这种情况下,您可以定义一个初始化程序,您可以在其中调用Hub.register_spoke 'Spoke'
。您可以在config/initializers/hub.rb