0

我有一个“有很多”用户和“有很多”仪表的帐户模型。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

在参数模型中。

4

1 回答 1

1
if user
  can :crud, Parameter, meter: { account_id: user.account_id }
end
于 2015-06-02T15:30:25.323 回答