我的服务文件夹中有许多服务对象。我正在使用 Rails 4:
->services
a_gen.rb
b_gen.rb
...
a_pro.rb
b_pro.rb
...
我希望我的文件夹结构是这样的
->services
->gen
a_gen.rb
b_gen.rb
...
->pro
a_pro.rb
b_pro.rb
...
我尝试只制作文件夹并将对象放在那里,但 Rails 提示找不到它。我必须告诉 rails 看那里吗?
更新:
我收到这个错误:
NameError - 未初始化的常量 ExampleModelName::APro
即使加载了路径。一旦它位于子文件夹中。Rails 正在查找错误的位置。
最佳答案
您可以通过两种方式做到这一点。
如果您希望 rails
在不对 config.autoload_paths
进行任何修改的情况下自动加载它们,请按如下文件夹结构定义您的类:
module Gen
class ServiceA
end
end
如果您不想对您的类定义进行任何更改,那么您可以将这些子文件夹添加到 config.autoload_paths
中,如下所示在您的 config/application.rb
module YourApplication
class Application < Rails::Application
config.autoload_paths += [
"#{Rails.root}/app/services/gen",
"#{Rails.root}/app/services/prod"
]
end
end
关于ruby-on-rails - 如何为子文件夹中的对象提供服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35611650/