如何在子文件夹中维护对象

时间:2016-02-24 19:48:33

标签: 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抱怨无法找到它。我是否必须告诉铁路看那里?

更新

我收到此错误:

NameError - 未初始化的常量ExampleModelName :: APro

即使加载了路径。一旦它在子文件夹中..Rails正在寻找错误的地方。

3 个答案:

答案 0 :(得分:5)

你可以用两种方式做到这一点。

如果您希望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

答案 1 :(得分:2)

用于递归解决方案

re.split

答案 2 :(得分:0)

是的,你这样做。在config/application.rb中,您可以将子文件夹添加到config.autoload_paths集合。