私はCanCanをプロジェクトで使用して、各プロジェクトの各エンティティで異なる役割レベルを管理しています。 は、私はこれをやっている:Cancan条件
# encoding: utf-8
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
if user.is_admin == true
can :manage, :all
else
can :read, :all
Project.all.each do |project|
current_role_name = user.roles.find_by_project_id(project.id).role_name.name
if current_role_name.eql?'Auteur senior'
can :manage, [Project, Introduction, Abstract, Text, Conclusion, Asset, Attachment], :project_id => project.id
elsif current_role_name.eql?'Auteur junior'
can :manage, [Introduction, Abstract, Attachment], :project_id => project.id
can :update, Text, :project_id => project.id, :user_level => current_role_name
can :manage, [Asset], :project_id => project.id, :user_level => current_role_name
elsif current_role_name.eql?'Équipe phylogéniste'
can :manage, [Attachment], :project_id => project.id
can :manage, [Text, Asset], :project_id => project.id, :user_level => current_role_name
end
end
end
end
end
それは私がユーザーROLE_NAMEを確認したときに動作しますが、私はこのような状態を使用したいとき後:
can :update, Text, :project_id => project.id, :user_level => current_role_name
条件は影響しません。どうすればそれを動作させることができますか?