问题标签 [rolify]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 与 Rails 的“虚拟关联”
我正在寻找一些关于如何在我的 Rails 模型中实现我所说的“虚拟关联”的指导。
我将用我考虑过的真正关联路径(HABTM)的免责声明作为开头,但据我所知,这会与我已经实现的概念相冲突。
我目前有一个Project
模型,可以User
通过roles
. 例如, aProject
可能有很多site_managers
,construction_managers
和project_managers
。Asite_manager
也可以是project_manager
相同或不同的 a projects
(排除单表继承)。
使用 Rolify gem,这很容易实现。我可以将上述任何角色分配给特定项目中的特定用户sample_user.add_role(:site_manager, sample_project)
。
我的目标之一是能够创建一个表单,我可以在其中设置一个新项目,并使用多选列表为用户分配角色。例如,我的表单将具有以下输入,以将选定的用户分配为新项目的站点经理:
= f.input :site_managers, collection: User.all, input_html: { multiple: true }
(Formtastic DSL)
这是事情变得稍微复杂的地方。我已经设法为site_maanagers
属性实现了一个自定义 getter/setter,我可以在其中获取表单传递的 user_ids 的哈希值,并根据需要获取/更新适当的记录。
然而,这个实现与真正的关联远非相似,我可以做一些事情,比如在 with 中添加一个单一user
的。site_managers
sample_project.site_managers << sample_user
目前我也无法使用用户实例设置 site_managers 数组。我的自定义设置器仅将user_ids
参数作为参数,在表单提交实现之外使用时有点麻烦且不是很直观。我可以通过检查 setter 方法中的类型来轻松解决这个问题,但它感觉很骇人,而且不像 Rails。
我已经尝试放弃整个自定义 getter/setter 并使用使用连接表来管理所有这些记录的 HABTM 实现,但我担心如果/当我们需要向项目添加更多角色时,这将无法很好地扩展(每个角色都会向连接表添加一个额外的列)。它也最终让人觉得我在复制 Rolify 已经提供的功能/概念,所以在某些地方我正在检查连接表中的角色并在其他地方使用 Rolify(即,如果用户是管理员或有权访问某些资源)。
还有什么我可能忽略的或者这是完成这项工作的唯一方法吗?
谢谢,我期待听到您的一些意见。
罗格
ruby-on-rails - ActiveRecord 合并与 rolify with_role 的行为很奇怪
给定这样的示例模型:
以下代码按预期工作:
然而
返回Foo
已使用表中的值填充的记录集合quxxes
。这意味着例如records.z
where z
is a column on foos
but not onquxxes
将给出缺少属性的错误。您几乎可以通过以下方式解决此问题:
但这是具有欺骗性的,因为它会从列中获取值,而不是quxxes
从foos
具有相同名称的列中获取值,例如id
, created_at
,并且updated_at
在典型的 Rails 应用程序中将来自quxxes
。
ruby-on-rails - 为 Devise on Ruby on Rails 设置不同的用户模型和注册路径
我对红宝石很陌生,几个月来我一直在为此苦苦挣扎。我进行了广泛的搜索并尝试了答案所说的内容,但仍然没有运气。(我尝试了使用 Ruby On Rails 的多用户模型,并设计了单独的注册路径,但有一个通用的登录路径,但没有用)
我目前有一个 user.rb 模型,它连接到设计并且工作正常。
1- 在注册页面上,我想有 3 个按钮,它们会导致单独的注册表单(业务、经理和现有用户各一个)。我是否在 routes.rb 中进行了设置?2-表单将具有不同的属性,这些属性将填充各自的数据库。3- 填写完表格后,他们将被引导到各自的路线。用户到当前默认路由,而业务到业务仪表板,经理到经理仪表板。这又是在 routes.rb 中还是在设计中?
我将不胜感激任何指导!
我已经阅读了设计、cancan 和 rolify 的文档,但我似乎无法将它们整合在一起为我工作。
我对红宝石很陌生,几个月来我一直在为此苦苦挣扎。我进行了广泛的搜索并尝试了答案所说的内容,但仍然没有运气。(我尝试了使用 Ruby On Rails 的多用户模型,并设计了单独的注册路径,但有一个通用的登录路径,但没有用)
我目前有一个 user.rb 模型,它连接到设计并且工作正常。
1- 在注册页面上,我想有 3 个按钮,它们会导致单独的注册表单(业务、经理和现有用户各一个)。我是否在 routes.rb 中进行了设置?2-表单将具有不同的属性,这些属性将填充各自的数据库。3- 填写完表格后,他们将被引导到各自的路线。用户到当前默认路由,而业务到业务仪表板,经理到经理仪表板。这又是在 routes.rb 中还是在设计中?
我将不胜感激任何指导!
我已经阅读了设计、cancan 和 rolify 的文档,但我似乎无法将它们整合在一起为我工作。
ruby-on-rails - 允许用户使用 devise 和 rolify 从注册表单中选择角色
我想允许用户从新用户表单上的复选框中选择他们的角色。
这是我的相关文件。
楷模:
控制器:
看法:
我可以使用从控制台添加角色
它工作正常。role_ids 列位于名为 user_roles 的表中。如何从新用户表单写入此表?
ruby-on-rails - 测试 CanCanCan 能力定义
我正在将 CanCanCan 与 Rolify 一起使用,并且正在尝试测试我的能力类授权。
测试非特权用户是否可以CRUD
在系统中的其他用户测试失败
但是我找不到任何原因导致我的能力类中的检查失败:
这是我的规格:
ruby-on-rails - Rails 权限明显不一致
我正在使用 gems 权限和 rolify 来管理一组主题的用户权限。:admin
仅当用户具有该主题的角色时,用户才能看到每个主题。视图中的代码:
授权人中的代码:
我的问题是显示了 ADMIN 部分,而不是页面的其余部分。但是,这两个 if 条件应该具有相同的真值。任何人都可以发现错误吗?
ruby-on-rails-4 - CanCanCan 在异常上抛出常规 Rails 错误,而不是像我指定的那样闪烁消息
我正在使用 CanCanCan、Devise & Rolify。
我的ApplicationController
样子是这样的:
我的routes.rb
样子是这样的:
这是我ability.rb
的相关:
因此,当我以 身份登录:member
并尝试转到 时/newsroom
,我收到此错误:
而不是像我所期望root_url
的那样被重定向到。:alert
不知道这里发生了什么。
编辑 1
对于它的价值,我只有在将它添加到我的时才会得到这个NewsroomController
:
ruby-on-rails - Ruby/Rails - 我的用户模型上的“事件”方法是个坏主意吗?
我正在开发一个应用程序,其中用户参与一个或多个事件,因此可以根据他们在这些事件中占据的角色说“拥有”事件。我正在使用 Rolify 将用户与事件相关联。Rolify 根据用户在该事件中所占据的角色形成用户与事件之间的关联。Rolify 更关心返回有关用户角色的数据,但不关心用户在其中具有角色的事件,因此不会返回有关事件的数据(除了其 ID)。
所以,我可以写一个这样的方法:
并获取与用户关联的所有角色。
其中一个角色如下所示:
我想做的就是说
并获取与 roleName 关联的所有事件。
显然,我不能只考虑通过 Rolify 提供给我的东西,所以我在我的用户模型上创建了一个方法来提供帮助:
我担心的是
- 这种方法在某种程度上违反了单一责任原则。
- 此方法需要多次数据库调用才能最终获取事件——一个到角色,另一个到事件。(我对这种事情没有经验,所以我不确定它到底有多糟糕。)
在保持我的 Rolify 角色设置的同时,有没有更好的方法来获取用户的事件?
ruby-on-rails-4 - Rolify 和 Rails 4 角色管理
我正在尝试在我的 rails 4 应用程序中实现基于角色的访问系统,并且我希望最终用户(super_admin)能够通过 UI 编辑角色分配。
我已经取得了一些成功,但不禁感到必须有更好的方法(因为我是 Rails 新手)。这是我的代码:
在我的表单(HAML 和 simple_form)中:
我正在努力解决以下问题:
- 由于没有模型,如何验证表单条目?
- 我应该使用强参数吗?如果是,我如何在没有模型的表单上实现
- 我如何创建类似的东西,但已经检查了当前角色?(真正的角色管理)
更新我已经按照评论的建议使用了改革 Gem。这似乎是一个很好的解决方案。然而,我对这个案例的实施有疑问。
让我把它映射出来:我在数据库中有 3 个表:
- 用户
- users_roles(具有 2 个属性的映射表:user_id & role_id {Join Table -> HABTM})
- 角色
我想构建一个表单,其中包含角色模型中的所有值作为复选框。复选框应指示将哪些值输入 users_roles 表(与特定用户相关)。我想要改革做的是验证这个表单的输入。此表单将始终显示角色中的所有值,但可能未选中某些/所有框。
我在我的应用程序中创建了一个表单文件夹,并从以下代码开始:
我是否朝着正确的方向前进?
谢谢您的帮助。
ruby-on-rails - cancan 能力:允许具有角色 create_user 的站点管理员创建或注册新的设计用户
对于应用程序,我正在尝试使用 cancan/cancancan、devise 和 rolify 实现 job_code 样式访问。
只有具有 job_code :create_user 的站点管理员才能创建新用户
以下是代码:
在 routes.rb 中,我有
应用控制器
当我使用时,abilities.rb 中的以下代码
它完美地工作。它带我到用户注册页面
但是,当我有这个代码时
它说拒绝访问(403 页)
我很难弄清楚,我应该使用什么来代替User incan :create, User