🖥

Ruby | cancan でコンディションを与えた後に can? と聞く方法

2023/08/26に公開

検証

初期状態では何も権限を与えていないので false が返る

can? :read, SomeClass
# => false

condition を指定して id: 1 に対して権限を与えてやる

can :read, SomeClass, id: 1

SomeClass クラスへの問いかけで true が返るようになる

can? :read, SomeClass
# => true

理由はこちらを参照: https://github.com/ryanb/cancan/wiki/Checking-Abilities

だが can と同じ文法ではコンディションを指定して can? 出来ない ( condition指定は無視されている様子 )

can? :read, SomeClass, id: 1
# => true
can? :read, SomeClass, id: 2
# => true

condition に対して can? と聞くには 、SomeClass のインスタンスを与えてやる

id: 1 でだけ true が返るのが分かる。

can? :read, SomeClass.new(id: 1)
# => true
can? :read, SomeClass.new(id: 2)
# => false

環境

  • cancancan (1.15.0)

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2017-09-07

Discussion