Rails 3命名空间&的麻烦定制类(未初始化的常量) [英] Rails 3 trouble with namespaces & custom classes (uninitialized constant)

查看:72
本文介绍了Rails 3命名空间&的麻烦定制类(未初始化的常量)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a file in my Rails 3.2.11 project called app/queries/visible_discussions.rb which looks like the following:

class VisibleDiscussions
  ...
end

我想为查询命名空间,以便可以使用Queries::VisibleDiscussions之类的名称进行调用,因此我尝试执行以下操作:

I'd like to namespace the query so that I can call it using something like Queries::VisibleDiscussions so I tried to do the following:

module Queries
  class VisibleDiscussions
    ...
  end
end

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

However, I'm getting a uninitialized constant Queries (NameError) when I try to call Queries::VisibleDiscussions from the rails console.

有什么想法吗?

推荐答案

如果将lib添加到autoload_paths,则它将遵循lib-lib/query/visible_discussions.rb

if you add lib to your autoload_paths then it will respect the namespacing under lib - lib/query/visible_discussions.rb

或在应用程序下创建一个新目录-说src,然后将您的代码嵌套在其中-app/src/query/visible_discussions.rb

or create a new dir under app - say src and then nest your code there - app/src/query/visible_discussions.rb

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

i would use the 3rd style in your post for either of these, i.e.

module Query
  class VisibleDiscussions
    ...
  end
end

这两种解决方案都让我很烦,也许有一种方法可以将Rails告知应用程序下的命名空间目录,但是我不知道如何实现

both of these solutions are annoying to me, there might be a way to tell rails to namespace directories under app, but i have no clue how it would be done

这篇关于Rails 3命名空间&的麻烦定制类(未初始化的常量)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆