メソッド 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に飛ぶ。