Ruby / Rails - 从外部类定义调用类方法

时间:2016-03-24 20:42:16

标签: ruby-on-rails ruby

我有一个“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应用程序中的加载时设置此关系,我似乎无法使其工作。帮助

1 个答案:

答案 0 :(得分:2)

你提到你想让Hub成为gem的一部分。在这种情况下,您可以定义一个初始化程序,您可以在其中调用Hub.register_spoke 'Spoke'。您可以在config/initializers/hub.rb

中执行此操作