Odoo 10中规则的定义、继承编辑及游戏化模块权限配置疑问
1. 什么是规则?如何在Odoo 10中继承并编辑规则?
什么是规则(IR Rules)
Odoo里的**记录规则(IR Rules)**是控制用户数据访问范围的核心工具,它和权限组是搭档关系:权限组决定用户能对某个模型做什么操作(读/写/创建/删除),而记录规则则进一步限定用户能看到这个模型里的哪些具体数据行。
在Odoo 10中继承并编辑规则的两种方式
通过用户界面(UI)操作
- 先确保你有系统管理员权限,进入「设置」模块,页面底部点击激活开发者模式(这是查看技术项的前提)。
- 路径:
设置 > 技术 > 安全 > 记录规则,找到你要修改的目标规则。 - 打开规则后,直接编辑名称、关联组、权限开关(读/写等)或者数据过滤域名(
domain_force),改完保存就行。
通过代码继承修改(开发者方式)
如果是做自定义模块,想通过代码调整现有规则,可以这么写:
<!-- 继承并修改现有规则的过滤条件 --> <record id="gamification.goal_user_visibility" model="ir.rule"> <field name="domain_force">[ '|', ('user_id','=',user.id), '&', ('challenge_id.user_ids','in',user.id), ('challenge_id.visibility_mode','in', ['ranking', 'public'])]</field> </record>
要是想给规则新增关联组:
<record id="gamification.goal_user_visibility" model="ir.rule"> <field name="groups" eval="[(4, ref('base.group_user')), (4, ref('your_custom_group'))]"/> </record>
注意:自定义模块要依赖目标模块(这里是gamification),不然会找不到规则。
2. 规则和组是否相同?如何让Eric管理gamification模块所有功能?
规则和组完全不同
- 权限组(Groups):是用户的集合归类,每个组可以绑定多个模型的操作权限(比如对
gamification.goal的全权限),用户加入组后,就自动继承该组的所有权限配置。 - 记录规则(IR Rules):是绑定到特定模型和特定组的「数据过滤器」,比如你贴的
goal_user_visibility,就是给base.group_user组的用户设定:只能看自己的目标,或者同挑战且公开排名的目标。
让Eric管理gamification全功能的步骤
你提供的goal_gamification_manager_visibility规则关联的是base.group_erp_manager组,这个组的用户能看到所有目标(因为domain_force是[(1, '=', 1)],匹配所有数据)。要让Eric拥有全权限,分两步走:
给Eric添加对应权限组
- 路径:
设置 > 用户和公司 > 用户,找到Eric的用户记录。 - 切换到「权限」标签页,优先找
Gamification专属的管理组(比如Gamification Manager),如果没有再考虑添加base.group_erp_manager(这个组权限偏大,谨慎使用)。 - 保存后,Eric就会继承该组的所有权限,包括对应的记录规则。
- 路径:
找不到对应组的解决办法
要是UI里找不到关联的组,可以自定义一个:- 路径:
设置 > 用户和公司 > 组,新建一个组(比如Gamification Admin)。 - 给这个组分配gamification所有模型的全权限(读/写/创建/删除)。
- 然后回到「记录规则」(开发者模式下),把这个新组关联到
goal_gamification_manager_visibility,或者直接新建一个记录规则,让这个组能访问所有gamification数据。
- 路径:
另外你说在UI里找不到这些规则,大概率是没激活开发者模式,按照前面的步骤激活后,就能在技术 > 安全 > 记录规则里找到它们了。
内容的提问来源于stack exchange,提问作者Tessnim
相关产品推荐
相关产品推荐

