如何在Ruby中从外部gem实例化一个类

时间:2017-07-19 01:11:51

标签: ruby

如何在Ruby中从外部gem实例化我的控制器中的类?

示例:我在Gemfile上放了这个gem。 https://github.com/sportdb/sport.db/tree/master/sportdb-models/lib/sportdb/models

我想把我的控制器,例如,模型中的Team

https://github.com/sportdb/sport.db/blob/master/sportdb-models/lib/sportdb/models/team.rb

如果我尝试这样做:

def index
  @foo = Team.first
end

此消息已输出:

  

未初始化的常量小组

那么,在我的控制器上实例化这个类 team.rb 的正确方法是什么?

由于

1 个答案:

答案 0 :(得分:0)

在ruby中,您可以将模块和类放在命名空间中。命名空间可以帮助将类组织到逻辑组中并避免冲突。例如,当您使用gem时,该类提供了一个具有公共名称的类(如Team),该类可能与您自己的类或来自其他gem的类冲突。

Team类位于模块Model内,而模块SprtDb位于模块SportDb::Model::Team内。因此,您应该使用的完整班级名称为:Team,而不仅仅是let data = [ {value:"dog", key:1}, {value:"apple", key:3}, {value:"man", key:2}, ]; data.sort((d1, d2) => { if (d1.key > d2.key) return 1; if (d1.key < d2.key) return -1; return 0; });