需求: 系统有多个组织机构,每个机构只能看到当前机构的数据
问题: 1.数据权限控制有类似 cancan 的 gem 可以参考吗? 2.数据权限控制一般有哪些处理的方法?
我的想法: 业务数据存储相关的表都有 organization_id 字段; 在执行所有 sql 查询操作的时候检查该表是否存在 organization_id 字段,如果存在,给该 sql 增加一个查询条件
组织机构有层级吗?包含层级权限吗?
pundit cancan 是 Gem,这种业务系统的权限模型一般是 RBAC,具体可以搜一下相关资料
具体实现可以参考 Redmine 的设计,一套支持继承的 RBAC,不过这种通常都比较复杂,要完全消化需要时间
但初衷就是限定数据访问的范围,那无非就是在数据库层面加一些用于划分数据所有权的字段,然后计算用户的所有权范围,限定只能查询到所在范围内的数据,你说的想法大体上没问题的