问题标签 [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.

0 投票
0 回答
406 浏览

ruby-on-rails - 与 Rails 的“虚拟关联”

我正在寻找一些关于如何在我的 Rails 模型中实现我所说的“虚拟关联”的指导。

我将用我考虑过的真正关联路径(HABTM)的免责声明作为开头,但据我所知,这会与我已经实现的概念相冲突。

我目前有一个Project模型,可以User通过roles. 例如, aProject可能有很多site_managers,construction_managersproject_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_managerssample_project.site_managers << sample_user

目前我也无法使用用户实例设置 site_managers 数组。我的自定义设置器仅将user_ids参数作为参数,在表单提交实现之外使用时有点麻烦且不是很直观。我可以通过检查 setter 方法中的类型来轻松解决这个问题,但它感觉很骇人,而且不像 Rails。

我已经尝试放弃整个自定义 getter/setter 并使用使用连接表来管理所有这些记录的 HABTM 实现,但我担心如果/当我们需要向项目添加更多角色时,这将无法很好地扩展(每个角色都会向连接表添加一个额外的列)。它也最终让人觉得我在复制 Rolify 已经提供的功能/概念,所以在某些地方我正在检查连接表中的角色并在其他地方使用 Rolify(即,如果用户是管理员或有权访问某些资源)。

还有什么我可能忽略的或者这是完成这项工作的唯一方法吗?

谢谢,我期待听到您的一些意见。

罗格

0 投票
1 回答
121 浏览

ruby-on-rails - ActiveRecord 合并与 rolify with_role 的行为很奇怪

给定这样的示例模型:

以下代码按预期工作:

然而

返回Foo已使用表中的值填充的记录集合quxxes。这意味着例如records.zwhere zis a column on foosbut not onquxxes将给出缺少属性的错误。您几乎可以通过以下方式解决此问题:

但这是具有欺骗性的,因为它会从列中获取值,而不是quxxesfoos具有相同名称的列中获取值,例如id, created_at,并且updated_at在典型的 Rails 应用程序中将来自quxxes

0 投票
1 回答
2803 浏览

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 的文档,但我似乎无法将它们整合在一起为我工作。

0 投票
0 回答
769 浏览

ruby-on-rails - 允许用户使用 devise 和 rolify 从注册表单中选择角色

我想允许用户从新用户表单上的复选框中选择他们的角色。

这是我的相关文件。

楷模:

控制器:

看法:

我可以使用从控制台添加角色

它工作正常。role_ids 列位于名为 user_roles 的表中。如何从新用户表单写入此表?

0 投票
1 回答
1323 浏览

ruby-on-rails - 测试 CanCanCan 能力定义

我正在将 CanCanCan 与 Rolify 一起使用,并且正在尝试测试我的能力类授权。

测试非特权用户是否可以CRUD在系统中的其他用户测试失败

但是我找不到任何原因导致我的能力类中的检查失败:

这是我的规格:

0 投票
1 回答
41 浏览

ruby-on-rails - Rails 权限明显不一致

我正在使用 gems 权限和 rolify 来管理一组主题的用户权限。:admin仅当用户具有该主题的角色时,用户才能看到每个主题。视图中的代码:

授权人中的代码:

我的问题是显示了 ADMIN 部分,而不是页面的其余部分。但是,这两个 if 条件应该具有相同的真值。任何人都可以发现错误吗?

0 投票
2 回答
843 浏览

ruby-on-rails-4 - CanCanCan 在异常上抛出常规 Rails 错误,而不是像我指定的那样闪烁消息

我正在使用 CanCanCan、Devise & Rolify。

我的ApplicationController样子是这样的:

我的routes.rb样子是这样的:

这是我ability.rb的相关:

因此,当我以 身份登录:member并尝试转到 时/newsroom,我收到此错误:

而不是像我所期望root_url的那样被重定向到。:alert

不知道这里发生了什么。

编辑 1

对于它的价值,我只有在将它添加到我的时才会得到这个NewsroomController

0 投票
1 回答
265 浏览

ruby-on-rails - Ruby/Rails - 我的用户模型上的“事件”方法是个坏主意吗?

我正在开发一个应用程序,其中用户参与一个或多个事件,因此可以根据他们在这些事件中占据的角色说“拥有”事件。我正在使用 Rolify 将用户与事件相关联。Rolify 根据用户在该事件中所占据的角色形成用户与事件之间的关联。Rolify 更关心返回有关用户角色的数据,但不关心用户在其中具有角色的事件,因此不会返回有关事件的数据(除了其 ID)。

所以,我可以写一个这样的方法:

并获取与用户关联的所有角色。

其中一个角色如下所示:

我想做的就是说

并获取与 roleName 关联的所有事件。

显然,我不能只考虑通过 Rolify 提供给我的东西,所以我在我的用户模型上创建了一个方法来提供帮助:

我担心的是

  1. 这种方法在某种程度上违反了单一责任原则。
  2. 此方法需要多次数据库调用才能最终获取事件——一个到角色,另一个到事件。(我对这种事情没有经验,所以我不确定它到底有多糟糕。)

在保持我的 Rolify 角色设置的同时,有没有更好的方法来获取用户的事件?

0 投票
1 回答
799 浏览

ruby-on-rails-4 - Rolify 和 Rails 4 角色管理

我正在尝试在我的 rails 4 应用程序中实现基于角色的访问系统,并且我希望最终用户(super_admin)能够通过 UI 编辑角色分配。

我已经取得了一些成功,但不禁感到必须有更好的方法(因为我是 Rails 新手)。这是我的代码:

在我的表单(HAML 和 simple_form)中:

我正在努力解决以下问题:

  1. 由于没有模型,如何验证表单条目?
  2. 我应该使用强参数吗?如果是,我如何在没有模型的表单上实现
  3. 我如何创建类似的东西,但已经检查了当前角色?(真正的角色管理)

更新我已经按照评论的建议使用了改革 Gem。这似乎是一个很好的解决方案。然而,我对这个案例的实施有疑问。

让我把它映射出来:我在数据库中有 3 个表:

  1. 用户
  2. users_roles(具有 2 个属性的映射表:user_id & role_id {Join Table -> HABTM})
  3. 角色

我想构建一个表单,其中包含角色模型中的所有值作为复选框。复选框应指示将哪些值输入 users_roles 表(与特定用户相关)。我想要改革做的是验证这个表单的输入。此表单将始终显示角色中的所有值,但可能未选中某些/所有框。

我在我的应用程序中创建了一个表单文件夹,并从以下代码开始:

我是否朝着正确的方向前进?

谢谢您的帮助。

0 投票
1 回答
644 浏览

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