Rails cancnan 変更 忘備録

load_and_authorize_resource はcancanのメソッド

class UsersController < ApplicationController
  load_and_authorize_resource

こちらはAdminuserController

class AdminuserController < ApplicationController
  before_action :set_adminuser, only: [:show, :edit, :destroy]

  # モデル名とアクション名が違うため明示的にセットする必要がある。
  load_and_authorize_resource :adminuser, :class => 'User', :parent => false

form_with はモデルを渡して、ルーティングを推定しているだけ。

userモデルupdate adminだった時リダイレクト先を変える。

  if @user.update(user_params)
    if current_user["company_admin"]
        format.html { redirect_to admin_user_path(@user.id), notice: 'User was successfully updated.' }
        format.json { render :show, status: :ok, location: @admin_user }
    else
        format.html { redirect_to @user, notice: 'User was successfully updated.' }
        format.json { render :show, status: :ok, location: @user }
    end