これが私のAbility.initializeです:
user ||= User.new # handle guest user
if user.has_role? :admin
can :manage, :all
elsif user.has_role? :moderator
can :read, :all
can :update, :all do |clazz|
clazz.managed_by? user
end
elsif user.has_role? :participant
can :update, :all do |clazz|
clazz.owned_by? user
end
can :read, :all do |clazz|
clazz.visible_to? user
end
else
raise "Role decoding in Ability fell through"
end
終わり
私の意図は、主要なドメインクラス[ユーザー、ラウンド、参加者、質問、およびプログラム]がすべてowned_by?、managed_by?を定義することです。とvisible_to?方法。また、そのうちの1つを更新または表示できるようにするためのルールが一律に適用されます。
しかし、私は次のようなステートメントを信じています:
can :update, :all do |clazz|
clazz.owned_by? user
end
clazz.owned_byにさえ到達しないと思うので、私が思うことをしていませんか?ライン。
誰かが私をまっすぐにすることができますか?私はドキュメントを見て、それが言っていることを私が使用しているテクニックと実際に結び付けることができませんでした。ありがとう!