我不知道如何实现多用户个人资料的显示。 对于少数类型的人,我使用STI继承。
我想要什么?
我想为每种类型的人创建最简单的路由,并为每种类型的人显示和编辑配置文件。现在我有这个:
我只考虑了人物模型的配置文件视图(backend_people_profile),以及每种类型的update_profile。这是对的吗?现在我有太多的重复路径。
的routes.rb
namespace :backend do
resources :managers, except: [:new, :create] do
get '/profile', to: 'people#show_profile'
end
resources :clients, except: [:new, :create] do
get '/profile', to: 'people#show_profile'
end
resources :receptionists, except: [:new, :create] do
get '/profile', to: 'people#show_profile'
end
resources :trainers, except: [:new, :create] do
get '/profile', to: 'people#show_profile'
end
resources :lifeguards, except: [:new, :create] do
get '/profile', to: 'people#show_profile'
end
end
答案 0 :(得分:1)
namespace :backend do
resources :people
[:clients, :receptionists, :trainers, :lifeguards].each |type| do
get type, to: "people#index"
end
end
我会从最简单的设置开始。在这种情况下,您只能拥有基本people
类型的完整CRUD路由。这可以避免使用大量执行完全相同操作的路径来混乱您的API。
对于每个子类型,您只需要一个索引操作,有点像:
GET /people?type=trainer
您可能需要考虑是否确实需要单独的配置文件路由 - 除非您需要使用传统的CRUD路径获得两种截然不同的表示:
GET|POST /people
GET|DELETE|PATCH /people/:id
GET /people/:id/new
GET /people/:id/edit
另一种情况是用户是CRUD的应用程序:由管理员编辑,您需要为常规用户注册提供单独的界面。在这种情况下,您可以这样做:
namespace :backend do
resources :people
[:clients, :receptionists, :trainers, :lifeguards].each |type| do
get type, to: "people#index"
end
end
# public facing route
resources :registrations, only: [:new, :create, :show, :edit, :update]