[ruby-on-rails] Rails 4 : 모델 네임 스페이스없이 하위 경로에서 레일 모델을 구성합니까?

이런 게 가능할까요?

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의 의견 을 읽으십시오 .


답변