除了自定义操作之外,我的一切都可以正常工作。我有一个没有正确保护的 upload_photos 操作。我在ability.rb 文件中添加了一个非常基本的测试操作,如下所示:
can :test, User, :id => user.id
但由于某种原因,它总是评估为真,所以我将其更改为以下
can :test, User, :email => 'a@a.com'
并且它总是评估为真。
有人知道为什么 cancan 在这里不能正常工作吗?
我的用户控制器顶部有以下内容:
load_and_authorize_resource
提前致谢。
解决方案:
Cancan 的 load_and_authorize_resource 会干扰自定义操作,因此我们需要执行类似的操作
load_and_authorize_resource :except => [:test]
然后在测试动作中:
authorize! :test, @user