デバイステーブルUserを変更して、クリアランス列を作成しました。この列は、ユーザーの権限(読み取り、読み取り/書き込み、フルコントロール)を表す番号(1〜3)です。私が読んでいるすべての例とは異なり、私のクリアランス(例の役割)は、関係を持つ別個のテーブルではなく、デバイステーブル(ユーザー)の独自の列です。デフォルト値は1です。
私のability.rbは次のようになります:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.clearance.equal?("2")
can :create, Post
can :manage, Post, :user_id => user.id
else
can :read, :all
end
end
end
クリアランス値が2のユーザーが投稿を作成し、自分の投稿。また、1と3のコードをまだ記述していないため、他のすべてのクリアランス番号ですべてを読み取ることができることも含めました。
ただし、Cancanは、私のユーザー(確認済みのクリアランスレベル2)が「else」条項に該当すると考えているため、投稿を読むことしかできません。新しいメッセージを作成しようとすると、このページのメッセージにアクセスする権限がありません。道に迷いました。ヘルプ?