之前的一个项目但是权限方面一直没有考虑,最近想给优化一下,所以考虑到 cancan 和 cancancan 了 但是 直观的感觉是如果要创建新的角色,或者修改某种角色的权限列表,都得在 ability.rb 中修改代码, 想问问有经验的人这两个 gem 该怎么选?优势劣势个是什么
选 3can,新的。
选择 cancancan 吧,用起来还是比较方便,但是要用好的话建议认真读下文档
pundit
有一个轻量级的 gem 包叫做 six,很简洁,我们用的就是这个,但是用起来感觉不是很灵活。。
推荐 pundit。cancancan 导致 ability 文件过于庞大,而且 DSL 会导致一些权限代码不是很清晰。pundit 基于一个很简单的概念 -- 把每段权限检查的逻辑抽到 Ruby Object 中去。用它之前先看看 作者博客 ,会很有帮助。
before_action