如何解决cancancan 能力返回 false 但仍然可以访问?
我有一个标准的康康设置。文章模型有一个属性 approved
。然后是标准设置:
# articles controller
load_and_authorize_resource only: [:index,:show]
def show
end
# ability.rb
# Solution 1
# can :show,Article,{ approved: true }
# Solution 2
can [:show],[Article] do |article|
article.approved?
end
当我尝试任一解决方案时,结果在控制台或调试器中按预期返回(即,如果文章已获批准,ability.can?(:show,@article)
返回 true,否则返回 false)。
奇怪的是,当上面返回的 false
明确指出它不应该被访问时,显示视图仍然可以在浏览器中访问。
我不明白为什么?
解决方法
在另一个论坛上调试了很多帮助之后,我们一直没有弄清楚为什么上面的方法不起作用。但是通过不使用 load_and_authorize_resource
而是将其放置在控制器操作中来实现所需的行为:
authorize! :show,@article
我很想知道为什么这种方法有效,但最初的方法无效。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。