2

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

class VisibleDiscussions
  ...
end

我想命名查询,以便我可以使用类似的方式调用它,Queries::VisibleDiscussions所以我尝试执行以下操作:

module Queries
  class VisibleDiscussions
    ...
  end
end

但是,uninitialized constant Queries (NameError)当我尝试Queries::VisibleDiscussions从 rails 控制台调用时,我得到了一个。

有任何想法吗?

4

2 回答 2

3

如果你添加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 下的命名空间目录,但我不知道该怎么做

于 2013-01-16T03:15:37.153 回答
0

Rails 需要知道要加载哪些目录(默认的一部分)。尝试:

#config.application.rb
config.autoload_paths += %W(#{config.root}/queries)
于 2013-01-15T23:45:56.103 回答