Rails 5:使用自定义文件夹无法自动加载

asc*_*man 6 ruby ruby-on-rails

我有这门课:

# app/events/new_request.rb
class Events::NewRequest
end
Run Code Online (Sandbox Code Playgroud)

我将该文件夹添加到自动加载:

# config/application.rb
config.autoload_paths += %W( events/ )
Run Code Online (Sandbox Code Playgroud)

运行时rails c:

> Events::NewRequest
NameError: uninitialized constant Events
Run Code Online (Sandbox Code Playgroud)

问题是如果我在定义类时不使用名称空间"Events",它会成功自动加载类.

max*_*max 3

module Sandbox
  class Application < Rails::Application
    config.autoload_paths += [config.root.join('app')]
  end
end
Run Code Online (Sandbox Code Playgroud)

这将使 Rails 自动Events::NewRequestapp/events/new_request.rb.

irb(main):001:0> Events
=> Events
irb(main):002:0> Events::NewRequest
=> Events::NewRequest
Run Code Online (Sandbox Code Playgroud)