【问题标题】:How to instantiate a class from a external gem in Ruby如何在 Ruby 中从外部 gem 实例化一个类
【发布时间】:2017-12-24 01:39:53
【问题描述】:

如何从 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 的正确方法是什么?

谢谢

【问题讨论】:

  • 您是否尝试过使用SportDB::Model::Team.new

标签: ruby


【解决方案1】:

在 ruby​​ 中,您可以将模块和类放在 命名空间 中。命名空间有助于将类组织成逻辑组并避免冲突。例如,当您使用的 gem 提供的类具有通用名称(如 Team)时,可能会与您自己的类或其他 gem 中的类发生冲突。

Team 类位于模块 Model 内,而后者又位于模块 SprtDb 内。所以你应该使用的完整类名是:SportDb::Model::Team 而不仅仅是Team

【讨论】:

    猜你喜欢
    • 2014-06-18
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多