### 記錄規則
一個記錄規則限制了給定模型的一個子集的訪問權限。規則是一個模型的`ir.rule`,是一個模型,一組數(many2many字段),權限的限制適用,和域。域指定記錄訪問權限的限制。
下面是一個規則的例子,該規則可以防止未處于狀態的導致的刪除 `cancel`. 注意該領域`組`必須遵循公約的方法[ ` write() `相同的價值](https://www.odoo.com/documentation/9.0/reference/orm.html#openerp.models.Model.write "openerp.models.Model.write") ORM的.
~~~ xml
<record id="delete_cancelled_only" model="ir.rule">
<field name="name">Only cancelled leads may be deleted</field>
<field name="model_id" ref="crm.model_crm_lead"/>
<field name="groups" eval="[(4, ref('base.group_sale_manager'))]"/>
<field name="perm_read" eval="0"/>
<field name="perm_write" eval="0"/>
<field name="perm_create" eval="0"/>
<field name="perm_unlink" eval="1" />
<field name="domain_force">[('state','=','cancel')]</field>
</record>
~~~
練習
記錄規則
添加模型的過程和組”openacademy /經理”的記錄規則,制約`寫`和`斷`訪問課程的負責人。如果一個課程沒有任何責任,所有的用戶都必須能夠修改它。
創建一個新的規則 `openacademy/security/security.xml`:
*openacademy/security/security.xml*
~~~ xml
<record id="group_manager" model="res.groups">
<field name="name">OpenAcademy / Manager</field>
</record>
<record id="only_responsible_can_modify" model="ir.rule">
<field name="name">Only Responsible can modify Course</field>
<field name="model_id" ref="model_openacademy_course"/>
<field name="groups" eval="[(4, ref('openacademy.group_manager'))]"/>
<field name="perm_read" eval="0"/>
<field name="perm_write" eval="1"/>
<field name="perm_create" eval="0"/>
<field name="perm_unlink" eval="1"/>
<field name="domain_force">
['|', ('responsible_id','=',False),
('responsible_id','=',user.id)]
</field>
</record>
</data>
</openerp>
~~~