Ruby on rails 4 避免单表继承的自定义路由重复

Ruby on rails 4 避免单表继承的自定义路由重复,ruby-on-rails-4,routes,single-table-inheritance,Ruby On Rails 4,Routes,Single Table Inheritance,我使用简单的表继承创建了几种类型的用户(Mover和Movee)。在我的路线中,我采用了一种类似的方式,即 . 但我发现自己在基类和两个子类中重新定义了相同的自定义路由 以下是模型的外观: User name email address Movee < User has_many: moves Mover < User 编辑地址操作的参数散列如下所示 { movee: { address: "some address"} type:

我使用简单的表继承创建了几种类型的用户(Mover和Movee)。在我的路线中,我采用了一种类似的方式,即 . 但我发现自己在基类和两个子类中重新定义了相同的自定义路由

以下是模型的外观:

User
    name
    email
    address

Movee < User
    has_many: moves

Mover < User
编辑地址操作的参数散列如下所示

{
  movee: { address:  "some address"} 
  type: "movee"
}
在导航栏中,我指向一个通用的编辑用户路径:

<li><a href="<%= edit_address_user_path(current_user) %>"> Update Address</a></li>

问题:有办法避免路线重复吗?我需要子类路由,以便传入类型来解析强参数,但我还需要基类路由,以便在视图中使用通用路由帮助器编辑地址用户路径。

这是我使用路由问题得到的路由:

  concern :addressable do
    member do
      get :edit_address
      patch :update_address
    end
  end

  resources :shmoovee,  path: :users, controller: :users, type: "shmoovee", concerns: :addressable 

  resources :shmoover,  path: :users, controller: :users, type: "shmoover", concerns: :addressable 

  resources :users do
    concerns :addressable
    # other user routes
  end

查看路由关注点,它可能会派上用场,或者它可以实现@kurenn真正想要实现的目标,感谢您向我指出路由关注点,我可以用它重构常见路由并减少重复。
  resources :shmoovee,  path: :users, controller: :users, type: "shmoovee" do
    member do
      get :edit_address
      patch :update_address
    end
  end

  resources :shmoover,  path: :users, controller: :users, type: "shmoover" do
    member do
      get :edit_address
      patch :update_address
    end
  end

  resources :users do
    member do
      get :edit_address
      patch :update_address
    end
  end
  concern :addressable do
    member do
      get :edit_address
      patch :update_address
    end
  end

  resources :shmoovee,  path: :users, controller: :users, type: "shmoovee", concerns: :addressable 

  resources :shmoover,  path: :users, controller: :users, type: "shmoover", concerns: :addressable 

  resources :users do
    concerns :addressable
    # other user routes
  end