cancancanで権限毎にControllerのロジックを変えたい(current_userの場合とadminの場合)のですが、if文が多くなり困っております。
cancancanのgemを用いて権限管理を前提としたサービスを開発しております。
仮に以下のロールがあったとします。
admin_user
hoge_user
piyo_user
これらのユーザーで
admin_userはすべての情報を知ることができ、
それ以外のユーザーはcurrent_userに関連する情報のみ見ることができる
といった機能を開発したいです。
こういう場合に
私の理解では、Controllerにその処理を書くには
if current_user.admin? Article.all else current_user.articles end
といった処理になるかと思います。
これはこれでいいのかもしれませんが、
今回、権限毎で処理を変えたいControllerが多数あり、
if文を量産してしまうことになります。
そのため、
cancancanやその他gemなどを用いて、
そこの処理を完結にまとめられないかなと考えております。
cancancanのAbilityクラスなどはまさにそういったことができるのかなと思ったのですが、
あくまで
can
cannot
の振り分けしかできないのかなというのが私の理解です。
皆さんならこういう用件に対して、どのようにアプローチするのでしょうか?
よろしくお願いします。