Cancancan授权嵌套资源

时间:2015-06-02 15:22:28

标签: ruby-on-rails nested cancancan

我的帐户模型中有很多"用户和#34;有很多"米。 Meter对象有一个account_id列,因此可以很容易地在Cancancan中定义此功能:

if user
  can :crud, Meter, :account_id => user.account_id
end

但是,仪表也有很多"参数。我想做一个类似的能力定义,如果参数属于与用户属于同一帐户的仪表,则只允许CRUD访问。

由于参数模型只有一个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
参数模型中的

1 个答案:

答案 0 :(得分:1)

{{1}}