0

ネストされたリソースの属性に基づいてモデルをフィルタリングしたいと思います。次に例を示します。

can :read, Model, has_many_relation: { attribute: attr }

この形式のブロックを使用する際の問題:

can :read, Model do |obj|
    obj.has_attribute(attr)
end

パーミッションは、単一のモデルを取得する場合にのみ使用できます ( #index アクションをロードするために呼び出された場合、パーミッションは無視されます)。

has_many リレーションに基づく条件を使用してモデルをフィルタリングするにはどうすればよいですか?

4

3 に答える 3

0

You could use a scope if you are using CanCan >= 1.6.

can :read,
  Model,
  Model.joins(:has_many_relation)
       .where(:has_many_table => { :attribute => attr }) 
于 2013-06-08T00:14:43.820 に答える
0

has_many 関係の属性でフィルタリングするには、条件の基本的なハッシュで十分です。

問題を提起するために使用される最初の例は次のとおりです。

can :read, Model, has_many_relation: { attribute: attr }

モデルに対応する has_many リレーションがあり、 has_many テーブルに属性によって参照される列が含まれていることを確認してください。

于 2013-09-11T15:56:30.440 に答える