我有一个客户端模型has_many Contacts
用户是否可以创建,更新或编辑取决于客户端而不是联系人,而销毁取决于联系人本身。
在ContactPolicy类中,我只需检查@ contact.client即可查看用户是否可以访问该文件。
但是对于List方法,我没有一个联系人,而是一个@ client.contacts列表,所以没有简单的方法告诉Pundit允许什么。
我不确定Pundit应该如何处理这个问题。
请注意,我不想要一个Scope,因为它是yes或no,具体取决于客户记录
答案 0 :(得分:4)
似乎由于访问权限由客户端确定,不是联系人,因此确定应该在ClientPolicy
和不 {{1 }}
Pundit策略是简单的ruby类,并且没有规则说能力方法需要与控制器动作相对应。根据您的描述,您可能正在寻找的功能是客户是否可以ContactPolicy
。因此,只需编写该功能并在操作中使用它而不是默认的list_contacts?
index?