【发布时间】:2016-09-20 09:36:04
【问题描述】:
我正在尝试使用 cancan 授予存在关联的访问权限。
它需要同时使用对象属性和accessible_by 选择(所以我不能使用块,除非有人告诉我在这样做时如何解决错误)。
我想出了一个残酷的技巧。
lead.rb
has_many :recordings
has_many :emails
ability.rb
can :manage, Lead
can :manage, Recording, :lead_id => (1..Lead.pluck(:id).max).to_a
can :manage, Email, :lead_id => (1..Lead.pluck(:id).max).to_a
我的意思是lead_id不为空...
有什么方法可以做到这一点,而无需每次都创建一个 100,000 个项目的数组?
额外信息:值得注意的是,这些并不是录音和电子邮件模型中唯一的控件,因此我可以添加额外的权限而不是重置和否定地表达它们,这一点很重要。
【问题讨论】:
-
生成数组的复杂方法有什么意义?为什么不只是
lead_id: Lead.ids?
标签: ruby-on-rails ruby cancan