ruby-on-rails - 如何为子文件夹中的对象提供服务

标签 ruby-on-rails ruby ruby-on-rails-4

我的服务文件夹中有许多服务对象。我正在使用 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/

相关文章:

ruby-on-rails - 如何使 select 查询在 rails 中相对更快?

ruby-on-rails - 在 Heroku 上使用 Resque 的后台作业

ruby-on-rails - rails, ruby​​, 如何计数和排序,显示最佳结果

ruby - Rails 将子错误与父错误合并

ruby-on-rails-4 - 嵌套排序无法按预期工作 ElasticSearch

ruby-on-rails - Raphael 中的 SVG 文件,可以使用吗?

ruby-on-rails - 为什么 Rails before_update 回调被弃用?还有什么选择呢?

ruby - 如何在没有迭代器的情况下在 Ruby 中收集 block 值?

ruby-on-rails - OpenSSL::SSL::SSLError: 主机名 "freegeoip.io"与 ruby​​ geocoder gem 中的服务器证书不匹配

ruby-on-rails - 如何在 active_model_serializers 中执行预先加载