我在我的Rails应用中有大约13个模型,我在所有模型上使用了Ability。我的Ability类已经变得非常庞大了。不同的CRUD操作有不同的权限条件,这使得它很难进行管理。 有人可以指导我如何重构它吗?比如使用模块或类来使我的Ability类看起来更整洁。
我想知道 load_and_authorize_resource 在内部是如何工作的。 我查看了 Github 页面 链接 并尝试理解,但没有找到有用的信息。我只知道load_and_authorize_resource就像一个before_filter,并且以某种方式加载我们在 abili...
在尝试调试cancan使用时,我发现如果使用以下内容,可以绕过访问被拒绝的消息: can :manage, Model 当我将它更改为以下内容时,我被拒绝访问: can :read, Model can :create, Model can :update, Model can...
在CanCan的文档中,展示了如何以以下方式获取所有可访问的记录:查找所有可访问的记录@articles = Article.accessible_by(current_ability) 但是current_ability是什么?我已经尝试使用当前用于认证和授权的用户,但是出现了以下错误:No...
根据所有文档,:read 操作被别名为 :index 和 :show:alias_action :index, show, :to => :read 然而,请考虑以下具有嵌套资源的情况:resources :posts resources :comments end 如果我像这样定义...
我有一个非RESTful控制器,我正在尝试使用cancan的authorize!方法来应用权限。 我有一个delete_multiple动作,开始如下: def delete_multiple @invoices = apparent_user.invoices.find(para...
我已经开始使用Devise和CanCan创建一个Rails应用程序。我的用户与文章之间有一对多的关系。我对CanCan不熟悉,这是我的计划: 管理员: - 可以对文章执行任何操作 登录用户: - 可以阅读和创建文章 - 可以编辑和删除自己的文章 访客用户: - 可以阅读文章 但我很难理...
当我执行以下操作时,到底发生了什么:@patient.course_enrollments.accessible_by(current_ability) 我获取了course_enrollments,其中 course.client_id = user.client.id ,但我不明白 acc...
我有一个组控制器,其中包含一个名为def inbox的方法。 如果用户是组成员,则inbox返回一个JSON对象。 如果用户不是成员,则inbox应该通过CanCan权限进行重定向。 我该如何编写RSpec来测试这两种用例? 当前规范:require 'spec_helper' de...