我有一个超过20个子类的STI模型,我需要将它们全部指向我的路由中的父控制器。我一直在路线中定义每一个,但这实际上是低效的而不是DRY。这就是它现在的样子。
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 :(得分:0)
它可能不起作用,因为MasterModel的子类尚未自动加载,因此该方法只返回一个空数组。尝试明确要求循环上方的模型,看看会发生什么。