2016-12-01 4 views
0

20 개 이상의 서브 클래스가있는 STI 모델이 있으며이를 모두 내 경로의 상위 컨트롤러로 지정해야합니다. 나는 각 길을 경로에서 정의하고 있지만, 이것은 실제로 비효율적이며 DRY가 아닙니다. 이것이 지금의 모습입니다.단일 컨트롤러의 DRY 경로 Rails 4 STI 모델

resources :red_master_models, :controller => 'master_models' 
    resources :green_master_models, :controller => 'master_models' 
    resources :yellow_master_models, :controller => 'master_models' 
    resources :purple_master_models, :controller => 'master_models' 
    resources :orange_master_models, :controller => 'master_models' 
    resources :grey_master_models, :controller => 'master_models' 
    resources :indigo_master_models, :controller => 'master_models' 
    resources :blue_master_models, :controller => 'master_models' 

나는 모든 하위 클래스를 반복하고 더 간단하게 정의 할 수 있어야한다고 생각합니다. 이것은 내가 시도한 것입니다 ...하지만 작동하지 않습니다.

MasterModel.subclasses.each do |master_model| 
    resources master_model.name.underscore.to_sym, :controller => 'master_models' 
    end 

답변

0

MasterModel의 하위 클래스가 아직 자동로드되지 않았으므로 메소드가 빈 배열을 반환하기 때문에 아마도 작동하지 않습니다. 명시 적으로 루프 위의 모델을 요구하고 어떤 일이 일어나는지보십시오.

+0

내 모델을 요구하는 구문은 무엇입니까? – NothingToSeeHere

+0

명시 적으로 모델을 요구하는 방법을 검색했으며 손실이 있습니다. 통찰력있어? – NothingToSeeHere

+0

죄송합니다. 첫 번째 의견을 보지 못했습니다. 이론을 테스트하기위한 목적으로, 나는 먼저 이것을 할 것입니다 : 'puts 'here' MasterModel.subclasses.each do | master_model | puts master_model.to_s resources master_model.name.underscore.to_sym, : controller => 'master_models' end – Brad