이런 게 가능할까요?
app/models/
app/models/users/user.rb
app/models/users/education.rb
목표는 / app / models 폴더를 더 잘 구성하는 것이지만 모델의 네임 스페이스를 지정할 필요가 없습니다.
Rails 3에 대한 답이없는 질문은 여기에 있습니다 :
Rails 3.2.9 and models in subfolders .
네임 스페이스와 함께 table_name을 지정하는 것은 작동하는 것처럼 보이지만 ( Rails 4 모델 하위 폴더 참조 ) 네임 스페이스없이이 작업을 수행하고 싶습니다 .
답변
기본적으로 Rails는 모델 디렉토리의 하위 폴더를 자동로드 경로에 추가하지 않습니다. 그렇기 때문에 네임 스페이스가있는 모델 만 찾을 수 있습니다. 네임 스페이스는 찾을 하위 디렉터리를 비 춥니 다.
앱 / 모델 의 모든 하위 폴더를 자동로드 경로에 추가하려면 config / application.rb에 다음을 추가합니다 .
config.autoload_paths += Dir[Rails.root.join("app", "models", "{*/}")]
또는 더 복잡한 앱 / 모델 디렉토리가있는 경우 위의 앱 / 모델 의 모든 하위 폴더를 함께 globing하는 방법이 제대로 작동하지 않을 수 있습니다. 이 경우 좀 더 명시 적으로 지정하고 지정한 하위 폴더 만 추가하면이 문제를 해결할 수 있습니다.
config.autoload_paths += Rails.root.join("app", "models", "<my_subfolder_name1>")
config.autoload_paths += Rails.root.join("app", "models", "<my_subfolder_name2>")
Rails 4.1 이상 업데이트
Rails 4.1부터 앱 생성기는 config.autoload_paths
기본적으로 포함되지 않습니다 . 따라서 위의 내용은 실제로 config / application.rb에 속합니다 .
최신 정보
위 코드의 자동로드 경로 예제 {*/}
가 {**}
. 이에 대한 자세한 내용은 muichkine의 의견 을 읽으십시오 .