1

これが私の能力の定義です:

can :manage,Order,:store => {:business_district => {:district_manager_id => user.id}}

そして、次の方法でリソースをロードするとき:

Order.accessible_by(current_ability)

次のような SQL を生成します。

SELECT COUNT(*) FROM `orders` INNER JOIN `stores` ON `stores`.`id` = `orders`.`store_id` INNER JOIN `business_districts` ON `business_districts`.`id` = `stores`.`business_district_id` WHERE (`stores`.`business_districts` = '---\n:district_manager_id: 37\n')

「where」のコードを除いて、SQLはすべて問題ないように見えます。私はそれを機能させる方法がわかりませんここはモデル関係です

1. store belongs_to business_district
2. order belongs_to store
3. business_district has district_manager_id

そして、business_district のすべての注文を確認したい

私はこれについてのトピックを見つけました:[CanCan深くネストされたリソースですが、 cancan でブロック定義を使用する場合、accessible_by(current_ability)ロードリソースを使用できません! そして、あなたはOrder.joins(:store => :business_district).where("district_manager_id = ?",current_user.id)私が欲しいものをロードするために使用することができます! cancan gemがこのようにできる方法はありますか?

4

1 に答える 1