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