ruby-on-rails - Rails 3 命名空间和自定义类的问题(未初始化常量)

标签 ruby-on-rails ruby-on-rails-3 module namespaces

我的 Rails 3.2.11 项目中有一个名为 app/queries/visible_discussions.rb 的文件,如下所示:

class VisibleDiscussions
  ...
end

我想为查询命名空间,以便我可以使用 Queries::VisibleDiscussions 之类的东西来调用它,所以我尝试执行以下操作:

module Queries
  class VisibleDiscussions
    ...
  end
end

但是,当我尝试从 Rails 控制台调用 Queries::VisibleDiscussions 时,我收到未初始化的常量查询 (NameError)

有什么想法吗?

最佳答案

如果将 lib 添加到 autoload_paths,那么它将尊重 lib 下的命名空间 - lib/query/visible_discussions.rb

或者在应用程序下创建一个新目录 - 比如说 src,然后将代码嵌套在那里 - app/src/query/visible_discussions.rb

我会在您的帖子中使用第三种样式,即

module Query
  class VisibleDiscussions
    ...
  end
end

这两个解决方案都让我烦恼,可能有一种方法可以告诉rails到应用程序下的命名空间目录,但我不知道如何完成

关于ruby-on-rails - Rails 3 命名空间和自定义类的问题(未初始化常量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14348891/

相关文章:

ruby-on-rails - Ruby on Rails 布局从模型读取数据

module - 动态-需要一个相对于 Racket 中当前模块路径的模块(或者如何在 Racket 中找到当前模块路径)

ruby-on-rails - 我应该将 "global"共享部分模板放在哪个文件夹中?

ruby-on-rails-3 - Rails nginx 目录索引被禁止

ruby-on-rails - 有没有办法重新渲染?

ruby-on-rails - 如何在 Rails 中的 Web 请求中对长进程进行子线程化

Python 类型错误 : 'module' object is not callable

python - 如何使用 importlib.import_module 在 Python 中导入模块

ruby-on-rails - 如何构建我的 RSpec 测试文件夹、文件和数据库?

ruby-on-rails - 可以在初始值设定项中访问 Rails 模型中的模块变量吗?