【发布时间】:2014-03-07 08:01:17
【问题描述】:
结合使用一些教程和截屏视频来设置 Rails 和 CanCan 以使用 Devise 等。我已经为 has_many :through 连接建立了 User、Role 和 UserRole 连接模型。而且我只希望某些用户能够分配某些角色,或使用这些角色创建新帐户等。
根据文档here,我觉得这应该很简单。我所拥有的基本上是这样的:
if user
if user.role? 'admin'
can :manage, User
elsif user.role? 'submanager'
can :manage, User, roles: { name: ['basic', 'premium'] }
end
else
can :create, User, roles: { name: ['basic'] }
end
然后我会简单地用以下形式测试它:
- if can? :create, User, roles: { name: 'admin' }
= check_box 'user[role_ids]', 'admin'
或者,至少,这是要点。相信我,我已经尝试过所有单数、复数、role_ids、role、role: [ ] 的组合。所以我认为这不是那么简单的事情。无论我做什么,can? 检查都会通过。每次。万无一失。
我在 CanCan 上找到了很多东西,但我似乎找不到这个特定的东西。是因为我试图滥用 CanCan,我应该以其他方式这样做吗?或者……我该怎么做?
【问题讨论】:
标签: ruby-on-rails devise authorization cancan