【问题标题】:Having a module and class with the same name具有同名的模块和类
【发布时间】:2011-06-05 19:27:16
【问题描述】:

我有一个模块 stat 存在于目录结构中:lib/stat_creator/stat/

在 lib/stat_creator/stat.rb 我有我需要的 lib/stat_creator/stat/ 目录中的文件,以及:

module StatCreator
    module Stat
    end
end

当我使用该模块时,我将类称为

StatCreator::Stat::Foo.new 

现在我想要一个存在于应用程序中的根 Stat 类。我在 app/models 中创建了我的 Stat 类,并在 routes.rb 中进行了设置。但是,如果我去 rails 控制台并尝试在 app/models 中使用 Stat 类,例如:

Stat.by_user_id("ID")

我收到错误:LoadError: Expected ../lib/stat_creator/stat.rb to define Stat

我认为使用命名空间的目的是避免这种冲突,所以我不明白我做错了什么。

【问题讨论】:

  • 您是否有机会在您的Stat 模型中使用include StatCreator
  • 我不包括 StatCreator,但我确实指定了它,就像我在上面添加的那样。我认为必须这样做,因为我不想调用 Stat::Foo.new,因为这会与 Stat 类产生冲突。

标签: ruby-on-rails ruby


【解决方案1】:

我愿意:

::Stat.by_user_id("ID")

【讨论】:

    猜你喜欢
    • 2016-11-17
    • 2020-03-08
    • 2020-07-21
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多