「多くの」ユーザーと「多くの」メーターを持つアカウント モデルがあります。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
パラメータモデルで。