如何在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 的正确方法是什么?
由于
答案 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;
});