私は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
可能?また、同じことをするためのより良い方法は何ですか?