Rails+deviseで稼働中のAPIに、ユーザー毎の権限設定を追加したい。 実装方法の背景 権限設定には大きく分けて2種類ある。と思う。 1.機能を制御するもの(主にcontrollerで制御する) 2.データを制御するもの(modelで制御しちゃいたい) 1はイメージしやすい。各APIを使う権限であり、controllerのメソッドを制御できれば良く、cancancan、pundit等のgemがある。 2は主に対象データのあるレコードが参照可能か、更新可能かを制御する。 例えば、ユーザーAは、itemモデルのid:1のデータを更新可で、id:2のデータは参照不可。ユーザーBはid:2だけ更新可のような。 2のようなデータ制御ができるgemを自分は知らない。そこで、current_userをmodelのdefault_scopeで使ってしまうことにした。 いや本当はcontroller
![Railsでデータの権限設定:Thread.currentを使ってみる | ちぇらぶ](https://cdn-ak-scissors.b.st-hatena.com/image/square/508f70ee5ce397586b2e4b6fc469472c753a618a/height=288;version=1;width=512/http%3A%2F%2Fwww.cherub.jp%2Fwp%2Fwp-content%2Fuploads%2F2018%2F01%2Fruby.png)