ruby-on-rails – Rails CanCan Hash条件不起作用
我有一个简单的Ability.rb设置如下:
if user.role? :super_admin can :manage,:all elsif user.role? :registered can :review,[Card,Deck],:visible => true end 别名:review => :index,:list,:show,:to. Card和Deck表都具有带有布尔选项的可见列.目前,表格中的每个对象都有:visible =>假.因此,我期望具有注册角色的用户将无法:查看任何对象,但事实并非如此.控制器级别的限制工作正常(编辑和删除不可访问),但我似乎无法使用条件的哈希来限制资源的查看.有什么想法吗? 编辑:我在两个控制器中有authorize_resource.使用Ruby 1.9.2,Rails 3.1和CanCan 1.6.7.我正在使用设计1.4.9进行身份验证. MySQL是数据库. 编辑: def show @deck = Deck.find(params[:deck_id] authorize! :review,@deck end 说实话,我对这个解决方案不满意,因为我没有看到authorize_resource无法工作的原因.我很乐意看到解释. 解决方法
你在打电话吗?
load_resource_authorize_resource 在你的控制器就像这样,或者你是否包括一个模型来授权? 我发现如果我键入以下内容,我可以复制您的问题: load_resource_authorize_resource Deck 我认为后者不起作用的原因是因为你要求CanCan任意授权“Deck”,而不是授权控制器动作,这是你真正想做的事情. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |