单控制器Rails 4 STI模型的DRY路由

时间:2016-12-01 17:07:52

标签: ruby-on-rails routes single-table-inheritance

我有一个超过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

1 个答案:

答案 0 :(得分:0)

它可能不起作用,因为MasterModel的子类尚未自动加载,因此该方法只返回一个空数组。尝试明确要求循环上方的模型,看看会发生什么。