2つのこと:
Ability.rb
def initialize(user)
user ||= User.new # guest user (not logged in)
alias_action :create, :read, :update, :destroy, to: :crud
if user.has_role? :group_creator
can :create, Group
elsif user.has_role?(:creator, Group)
can :manage, Group, owner_id: user.id
elsif user.has_role?(:admin, Group)
can :crud, Group, :id => Group.with_role(:admin, user).pluck(:id)
else
can :read, Group
end
end
関連GroupsController.rbは
class GroupsController < ApplicationController
before_action :authenticate_user!
load_and_authorize_resource
def index
@groups = Group.all # Can be deleted due to cancancan?
end
def new
@group = Group.new # Can also be deleted due to cancancan...
end
end
私はコンソールにデバッグを試してみました。
ユーザーは次を必要とします:読み込みAND:新しい操作にアクセスする能力を作成します。これは私にとってこの問題を解決しました。
今朝私は新鮮な心を抱いて、他の人たちのためにいくつかアドバイスをしてくれました。それは私のように新しいものです...能力を変更した後にサーバを再起動してください...私はそれについて言及すべきだと思った)。 Cancancan wikiには、能力の動的変更のための別個のパーミッションテーブルの利用方法に関する説明がいくつかあります。