首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Rails:我需要不同的AdminUsers来拥有不同的权限

Rails:我需要不同的AdminUsers来拥有不同的权限
EN

Stack Overflow用户
提问于 2018-09-28 20:32:20
回答 1查看 113关注 0票数 0

所以我要直截了当地说。

我正在使用ActiveAdmin宝石,所以我的应用程序中有AdminUser模型.现在我从我的客户端获得了一个要求,即“超级管理员”必须能够控制其他管理员的权限。

因此,例如,如果我有资源:MessageClientCountry,“超级管理员”应该能够将管理消息的任务分配给AdminUser,将管理客户端的任务分配给另一个AdminUser,将管理国家的任务分配给另一个AdminUser。

为此,我考虑将几个boolean属性添加到admin_users表中。例如,一个名为“boolean”的super_admin属性将用于确定该AdminUser是否可以更改其他AdminUsers的权限,而另一个名为message的属性将用于确定该AdminUser是否具有控件(可以编辑、读取、删除等)。在消息上,将使用另一个名为country的属性来确定此AdminUser是否具有控件(可以编辑、读取、删除等)。在国家的上空……

,有什么问题吗?,我不能在模型中access to current_admin_user,所以我不能做这样的事情:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ActiveAdmin.register Message do
  if (current_admin_user.message)
    permit_params Commune.attribute_names.map(&:to_sym)
  end
end

那我能做什么呢?我必须构建这个功能!

EN

回答 1

Stack Overflow用户

发布于 2018-09-29 03:47:12

编辑我发现这个gem将角色添加到active admin role

为什么要做模特?代码看起来应该放在控制器中,permit_params.

我会用专家。我可以看到,,can,can,,是五年前更新的。它们是相似的。

专家回购:https://github.com/varvet/pundit

它使用策略,因此您为每个模型创建策略。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class PostPolicy < ApplicationPolicy
  def update?
    user.admin? or not record.published?
  end
end

你可以在更新、创建、显示或者其他任何东西时检查你的旗帜.

实际上,您使用的是类似于以下授权@post :update?之类的东西

引用他们医生的话

在这种情况下,您可以想象授权会做这样的事情:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
unless PostPolicy.new(current_user, @post).update?
  raise Pundit::NotAuthorizedError, "not allowed to update? this #{@post.inspect}"
end

希望它能帮上忙

你需要更复杂的解决方案。我会创建角色模型,在这里我可以指定模型、读、写权限。我会将它与我的用户链接到has_many角色,并在策略中执行如下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class PostPolicy < ApplicationPolicy
  def get_role
    user.roles.where(model: "Post").first
  end
  def update?
    user.get_role.write? or not record.published?
  end
end

或者有更好的方法在政策模型中使用.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52565127

复制
相关文章
Hibernate的继承映射
对象模型示例: 继承映射的实现方式有以下三种: (一)每棵类继承树一张表 (二)每个类一张表 (三)每个子类一张表 (一)每棵类继承树一张表 关系模型如下: 映射文件如下: <hibernate-ma
nnngu
2018/04/03
1K0
Hibernate的继承映射
Hibernate的关联映射
首先我们了解一个名词ORM,全称是(Object Relational Mapping),即对象关系映射。ORM的实现思想就是将关系型数据库中表的数据映射成对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。Hibernate正是实现了这种思想,达到了方便开发人员以面向对象的思想来实现对数据库的操作。 Hibernate在实现ORM功能的时候主要用到的文件有:映射类(*.java)、映射文件(*.hbm.xml)和数据库配置文件(*.properties/*.cfg.xml),
nnngu
2018/04/03
1.4K0
Hibernate的关联映射
【Hibernate】Hibernate的映射关系「建议收藏」
还记得我们在EF映射中学过的ORM 吗?ORM(Object Relational Mapping )就是对象关系映射,它是指面向对象的对象模型和关系型数据库的结构之间的相互转换。当我们操作实体对象的时候,就不需要操作复杂的SQL语句,而是对实体对象的属性和方法进行操作。Hibernate就体现了ORM的思想,将关系数据库中的表映射成对象,开发人员对数据库的操作就可以转化为对对象的操作。
全栈程序员站长
2022/08/09
7270
【Hibernate】Hibernate的映射关系「建议收藏」
Hibernate 映射文件
Hibernate是一个Java框架,用于将Java对象映射到关系型数据库中。它使用映射文件来描述Java类和数据库表之间的映射关系。
堕落飞鸟
2023/05/15
3980
Hibernate【映射】续篇
组件映射 Java主要的类主要有两种方式 组合关系,组合关系对应的就是组件映射 继承关系,继承关系对应的就是继承映射 组件映射实际上就是将组合关系的数据映射成一张表,组件类和被包含的组件类映射成一张表
Java3y
2018/03/15
7720
Hibernate【映射】续篇
【Hibernate】关系映射
上一篇博客从整体上认识了一下Hibernate的映射关系,今天就来总结一些常用的关系映射。
全栈程序员站长
2022/08/09
7610
【Hibernate】关系映射
HIbernate 中的 继承映射
数据库中Delivery表:id,recipient,phone,address,postcode,delivery_type,parcel_number,express_company,express_number
Hongten
2018/09/18
9620
hibernate Java 时间和日期类型的 Hibernate 映射
在 Java 中, 代表时间和日期的类型包含: java.util.Date 和 java.util.Calendar. 此外, 在 JDBC API 中还提供了 3 个扩展了 java.util.Date 类的子类: java.sql.Date, java.sql.Time 和 java.sql.Timestamp, 这三个类分别和标准 SQL 类型中的 DATE, TIME 和 TIMESTAMP 类型相应
全栈程序员站长
2022/07/12
1K0
hibernate Java 时间和日期类型的 Hibernate 映射
Hibernate映射继承关系
在Hibernate中,继承关系是面向对象编程中常见的一个概念,主要涉及到父类与子类之间的关系。在实际开发过程中,我们有时候需要将继承关系映射到数据库中,以便进行数据操作。在Hibernate中,继承关系的映射可以使用三种方式,分别是单表继承、多表继承和一对一继承。
堕落飞鸟
2023/05/16
5420
Hibernate关联关系映射[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/115516.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/10
5770
hibernate 关联映射(2)
<mapping resource="com/nerd/entity/Person.hbm.xml"/>
用户5166556
2019/04/16
4340
Hibernate实体关系映射
上一篇文章我们学习了Hibernate的框架搭建,并且完成了单表的CRUD操作,今天我们来学习Hibernate中的多表关联。
南风
2019/04/22
1.1K0
Hibernate实体关系映射
Hibernate【映射】知识要点
前言 前面的我们使用的是一个表的操作,但我们实际的开发中不可能只使用一个表的…因此,本博文主要讲解关联映射 集合映射 需求分析:当用户购买商品,用户可能有多个地址。 数据库表 我们一般如下图一样设计数
Java3y
2018/03/15
2.1K0
Hibernate【映射】知识要点
【Hibernate教程】集合映射
一、List集合映射 1、Grade类 2、Student类 3、Grade.hbm.xml 4、Student.hbm.xml 5、HibernateTest 6、数据库 二、Map集合映射 1、Grade类 2、Student类 3、Grade.hbm.xml 4、Student.hbm.xml 5、HibernateTest 6、数据库
程序员云帆哥
2022/05/12
2650
【Hibernate教程】集合映射
Hibernate的核心对象关系映射
Hibernate的核心就是对象关系映射: 加载映射文件的两种方式:   第一种:<mapping resource="com/bie/lesson02/crud/po/employee.hbm.
别先生
2018/01/02
1.9K0
Hibernate的核心对象关系映射
Hibernate学习---关联关系映射
关联关系是用到的最多的一种关系,非常重要,在内存中反映为实体关系,映射到DB中主键外键关系,实体间的关联,即对外键的维护,关联关系的发生,即对外键数据的改变。 在这里就不赘述什么是外键什么是主键了。 一丶关联的的数量 实体对象间的关联从数量上可以划分为 1:1(一对一) 1:N(一对多) N:1(多对一) M:N(多对多) 二丶关联属性 Java代码实体定义中,声明另一个实例类类型或其集合类型的属性,称为关联属性。 public class Department{ private Integer
MindMrWang
2018/04/16
1.3K0
Hibernate学习---关联关系映射
Hibernate学习笔记 多表映射
前面说了Hibernate的单表映射,由于是实体类和数据表之间一对一的映射,所以比较简单。现在就来说说多表映射,这需要涉及到多个实体类和数据表之间的关系。因此稍微复杂一点。
乐百川
2022/05/05
1.6K0
【Hibernate教程】组合主键映射
1、编写组合主键的类,该类必须实现Serializable接口 生成对应的get/set方法;最好实现equals和hashCode方法
程序员云帆哥
2022/05/12
2680
【Hibernate教程】组合主键映射
初识Hibernate之继承映射
Single
2018/01/04
8240
初识Hibernate之继承映射
Hibernate之集合映射的使用(Set集合映射,list集合映射,Map集合映射)
别先生
2018/01/02
2.8K0
Hibernate之集合映射的使用(Set集合映射,list集合映射,Map集合映射)

相似问题

多到一个Hibernate映射

14

Hibernate多到多映射

22

hibernate postgres多到一个映射问题

15

多到多个复杂的hibernate映射

12

hibernate中的多到多映射

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文