我在Ruby on rails上遇到了cancancan gem和继承表的问题。
我的帐户模型包含多个具有不同功能的继承模型Teacher < Account
,Director < Account
。
以下是我的规则:&#34;在ability.rb&#34;
if account.director?
can :manage, Account, profile: [ :teacher, :director ]
end
if account.teacher?
can :manage, Account, profile: [ :teacher ]
end
我的路线文件如下:
resources :directors, controller: :accounts, profile: :director
resources :teachers, controller: :accounts, profile: :teacher
当我以教师身份登录并进入/导演(索引页面)时,Cancan应该发出Unauthorized :: AccessDenied消息,而不是显示导演页面。
我可能在文档中遗漏了一些东西。有人可以启发我吗?
由于
答案 0 :(得分:0)
根据这个:
can :read, Project, :active => true, :user_id => user.id
Ability类中的内容应匹配Rails STI子类:
can :manage, Account, type: 'Teacher'