devise+ActiveAdmin+CancancanでAbilityクラスのuserがnilだった時に確認するところ
前提
先にdeviseでログイン回り構築済みの状態で、ActiveAdmin、cancancanの順に追加していった。
以下のサイトを参考に設定。
- Deviseインストール済環境でActiveAdminの導入
- CanCanCanを使ってみる
- 【Rails】ActiveAdmin+CanCanCanで権限毎に色々したい
- [rails]ActiveAdminとCanCanCanを使って管理画面に権限機能をつける
環境は以下
- Ruby 2.5.3
- Rails 5.2.3
- activeadmin 2.0.0
- cancancan 3.0.1
- devise 4.6.2
- rolify 5.2.0
Abilityクラスのuserがnilだったら...
ためしたところ、権限が効いていなかった。
解決策としては、active_admin.rbのconfig.current_user_methodのコメントアウトを外すことだった。
config/initialize/active_admin.rb(97行目あたり)
config.current_user_method = :current_user
その他の補足
左上のタイトルを変えたりリンクをつけたりする
config/initialize/active_admin.rb(7行目あたり)
config.site_title = "マスタメンテナンス"
config.site_title_link = "/admin"
サインアウトでエラーとならないよう、deleteのメソッドを追加する。
config/initialize/active_admin.rb(109行目あたり)
config.logout_link_path = :destroy_user_session_path
config.logout_link_method = :delete
ユーザのActiveAdminサンプル
config/initialize/active_admin.rb(7行目あたり)
config.site_title = "マスタメンテナンス"
config.site_title_link = "/admin"
config/initialize/active_admin.rb(109行目あたり)
config.logout_link_path = :destroy_user_session_path
config.logout_link_method = :delete
ロールにrolifyを使用している。ユーザテーブルのマスタメンテ画面にロール情報も追加したいときのサンプル
stack overflow-Updating Roles in rolify using ActiveAdminより
app/admin/users.rb
ActiveAdmin.register User do
permit_params :email, :password, :password_confirmation, :confirmed_at, role_ids: []
form do |f|
f.inputs "User Details" do
f.input :email
f.input :password
f.input :password_confirmation
f.input :confirmed_at
f.input :roles, as: :check_boxes
end
f.actions
end
# Allow form to be submitted without a password
controller do
def update
if params[:user][:password].blank?
params[:user].delete "password"
params[:user].delete "password_confirmation"
end
super
end
end
end
Author And Source
この問題について(devise+ActiveAdmin+CancancanでAbilityクラスのuserがnilだった時に確認するところ), 我々は、より多くの情報をここで見つけました https://qiita.com/syany/items/66f50a4f8fc3f6d06b61著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .