我有一个“有很多”用户和“有很多”仪表的帐户模型。Meter 对象有一个 account_id 列,因此很容易在 Cancancan 中为此定义能力:
if user
can :crud, Meter, :account_id => user.account_id
end
然而,一个仪表也“有很多”参数。我想做一个类似的能力定义,仅当参数属于与用户属于同一帐户的仪表时才允许 CRUD 访问。
由于 Parameter 模型只有一个 Meter_id 列(而不是一个 account_id 列),我不确定实现这种额外嵌套级别的最佳方法?
编辑
为不清楚而道歉。
我的模型如下:
Account > User (account_id)
> Meter (account_id) > Parameter (meter_id)
所以我可以检查 user.account_id = meter.account_id,但我不确定如何检查参数。
编辑 2
除了马特的回答之外,这只是一个包含以下内容的案例:
load_and_authorize_resource :meter
load_and_authorize_resource through: :meter
在参数模型中。