【发布时间】:2013-01-05 20:14:43
【问题描述】:
我正在使用devise_invitable gem 在我的应用程序中启用邀请以及为 rails 3 应用程序设计的功能。我有一个User 和Profile 模型。在User 中有一个role 列,它给出了用户的类型。
现在,我想将创建新邀请的功能仅限制为管理员,方法是将此范围路由限定为 devise/invitations#new 其中user.role=='admin' 并向所有人开放其余路由。像这样的
MyApp::Application.routes.draw do
devise_for :users, skip: [:registrations, :invitations]
as :user do
get 'users/edit' => 'devise/registrations#edit', as: 'edit_user_registration'
put 'users' => 'devise/registrations#update', as: 'user_registration'
# manually define alll devise_invitable routes, except devise/invitations#new
# accept_user_invitation GET /users/invitation/accept(.:format) devise/invitations#edit
# user_invitation POST /users/invitation(.:format) devise/invitations#create
# also the #accept route goes here
end
resource :profile, except: :destroy
authenticated :user, lambda {|u| u.role == "admin"} do
resources :user, controller: "user"
#only allow admin to invite other users
# new_user_invitation GET /users/invitation/new(.:format) devise/invitations#new
end
root to: 'profiles#show'
end
可能吗?另外,做同样事情的更好方法是什么?
【问题讨论】:
标签: ruby-on-rails devise routes devise-invitable