Ruby on rails 3 可以(:update)返回false,但不能限制对具有继承的\u资源的资源进行编辑/更新

Ruby on rails 3 可以(:update)返回false,但不能限制对具有继承的\u资源的资源进行编辑/更新,ruby-on-rails-3,cancan,inherited-resources,Ruby On Rails 3,Cancan,Inherited Resources,我在使用继承资源的cancan时遇到了一个奇怪的问题(可能是bug?),我为一个用户定义了一个编辑权限,然后突然授权他们访问/edit操作,尽管该功能返回false。这就是我所经历的行为 class VenuesController < ApplicationController inherit_resources authorize_resource end 这将返回正确的值,正如我在测试中以及在视图中进行健全性检查时所看到的: 地点/edit.html.haml 所以,如果我

我在使用继承资源的cancan时遇到了一个奇怪的问题(可能是bug?),我为一个用户定义了一个编辑权限,然后突然授权他们访问/edit操作,尽管该功能返回false。这就是我所经历的行为

class VenuesController < ApplicationController
  inherit_resources
  authorize_resource
end
这将返回正确的值,正如我在测试中以及在视图中进行健全性检查时所看到的:

地点/edit.html.haml 所以,如果我在编辑操作中,并且我的视图显示“我无法更新”,那么cancan不应该从此页面重定向我吗?作为双重的精神检查,我试着

can :update, Venue do |venue|
  false
end
还是没有运气。。。我只是觉得奇怪,在没有任何能力定义的情况下,我会被重定向,但是当我定义了一个返回false的能力时,我不会被重定向,尽管视图层正确地告诉我我不能编辑。有什么想法吗?这是虫子吗?我做错什么了吗


此外,我不仅可以看到编辑操作,还可以实际向资源发出put请求并保存资源。

您正在定义:更新操作,但在编辑操作上检查它。确定您看到的位置正确吗?我想cancan会使用“更新”功能限制更新和编辑。无论如何,即使我明确告诉cancan我的用户没有权限:编辑,我仍然不会被重定向
= can? :update, @venue
#returns false
can :update, Venue do |venue|
  false
end