小弟在做一个项目,是一个在线作业系统,学生通过可通过此系统提交作业,查看其它人作业,另外的角色还有助教和老师。之前实现的权限系统是通过 user 里面加了一个 role 的字段来标示用户的身份,但是发现这样拓展性太差。 现在希望能把权限系统优化下,目前我的思路是 user,role,privilege 三张表,1-n,n-n 关系。但是具体对于 privilege 的实现不是很了解,尤其是 activerecord 层的东西。望得到高手指教!
http://railsapps.github.com/tutorial-rails-bootstrap-devise-cancan.html 看一下这份教程吧,里面有讲楼上的 rolify
抽象的描述只能有抽象的回答。。所以还是先写代码把
rolify 也可以把 role 绑定到某个资源上,首页第一个例子就是
user.has_role?(:moderator, Forum.first)
更多例子 add-a-role-to-a-user
cancan 可以加 condition 定义那些资源能够访问,不过规则要么自己静态定义在 ability.rb 里,要么配合 rolify 使用