我有一个Rails项目,想创建一些自定义查询对象供我的应用程序使用。
类文件位于/app/queries/tasks
中,它们的示例如下:
module Queries
module Tasks
class TaskQuery
#some code
end
end
end
我已将/ app / queries路径添加到自动加载常量,并用rails r 'puts ActiveSupport::Dependencies.autoload_paths'
进行了验证,我发现/ app / queries中的所有目录都包括在内,包括/ app / queries / tasks。
但是,当我尝试使用这样的对象(从Rails控制台或控制器)时:
Queries::Tasks::TaskQuery.new()
我得到:
Traceback (most recent call last):
1: from (irb):1
NameError (uninitialized constant Queries)
知道为什么会这样吗?
答案 0 :(得分:3)
如果querys文件夹包含一个querys文件夹(其中包含一个tasks文件夹,其中包含task_query文件),您的实际代码将起作用:
queries
└── queries
└── tasks
└── task_query.rb
如果查询文件夹位于autoload_paths
中,则不必将Tasks
包装在Queries
模块中,因为Queries
是要保留的文件夹它。仅使用Tasks
:
module Tasks
class TaskQuery
...
end
end