Theo mặc định, Rails không thêm các thư mục con của thư mục mô hình vào đường dẫn tự động tải. Đó là lý do tại sao nó chỉ có thể tìm thấy các mô hình không gian tên - không gian tên chiếu sáng thư mục con cần tìm.
Để thêm tất cả các thư mục con của ứng dụng / mô hình vào đường dẫn tự động tải, hãy thêm phần sau vào config / application.rb :
config.autoload_paths += Dir[Rails.root.join("app", "models", "{*/}")]
Hoặc, nếu bạn có một phức tạp hơn ứng dụng / mô hình thư mục, các phương pháp trên của globing cùng tất cả các thư mục con của ứng dụng / mô hình có thể không hoạt động đúng. Trong trường hợp đó, bạn có thể giải quyết vấn đề này bằng cách rõ ràng hơn một chút và chỉ thêm các thư mục con mà bạn chỉ định:
config.autoload_paths += Rails.root.join("app", "models", "<my_subfolder_name1>")
config.autoload_paths += Rails.root.join("app", "models", "<my_subfolder_name2>")
CẬP NHẬT cho Rails 4.1+
Kể từ Rails 4.1, trình tạo ứng dụng không bao gồm config.autoload_paths
theo mặc định. Vì vậy, lưu ý rằng những điều trên thực sự thuộc về config / application.rb .
CẬP NHẬT
Đã sửa lỗi các ví dụ về đường dẫn tự động tải trong đoạn mã trên để sử dụng {*/}
thay thế {**}
. Hãy chắc chắn để đọc bình luận của muichkine để biết chi tiết về điều này.