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



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

class VisibleDiscussions
  ...
end

我想给查询命名空间,这样我就可以用Queries::VisibleDiscussions这样的东西来调用它,所以我试着做以下事情:

module Queries
  class VisibleDiscussions
    ...
  end
end

然而,当我试图从rails控制台调用Queries::VisibleDiscussions时,我得到了uninitialized constant Queries (NameError)

任何想法?

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

或者在app下创建一个新目录-比如src,然后在那里嵌套你的代码- app/src/query/visible_discussions.rb

我会在你的文章中使用第三种样式,即

module Query
  class VisibleDiscussions
    ...
  end
end

这两个解决方案对我来说都很烦人,可能有一种方法可以告诉rails在app下命名空间目录,但我不知道如何做到

Rails需要知道加载什么目录(默认值的一部分)。试一试:

#config.application.rb
config.autoload_paths += %W(#{config.root}/queries)

相关内容

  • 没有找到相关文章

最新更新