メソッド authorize
について
pundit
認可の仕組みを提供してくれる
簡単に言うと「ユーザーによってページ表示の許可・拒否をしたり、表示情報の範囲を変えたりすることができるgem」です。
Punditをなるべく優しく(qiita)
https://qiita.com/yutaro50/items/52484b7ae4ca87aa99a2
ドキュメント
https://github.com/varvet/pundit
Userの権限が3種類あるとする(admin,editer,writer)
article_policy.rb
class ArticlePolicy < ApplicationPolicy
def create?
user.admin? || user.editor?
end
article_controller.rb
class ArticlesController < ApplicationController
def create
authorize(Article)
@article = Article.new(article_params)
if @article.save
redirect_to edit_admin_article_path(@article)
else
render :new
end
end
こうしておけば、
createアクションに飛んだ時にauthorizeメソッドが呼ばれて、引数に(Article)があるので、
articlepolicyのcreateに飛ぶ。