def new
before_filter do
redirect_to "/" unless current_admin || current_company
flash[:notice] = 'You dont have enough permissions to be here' unless current_admin || current_company
end
CODE CODE CODE
end
def edit
before_filter do
redirect_to "/" unless current_admin.id = 5
flash[:notice] = 'You dont have enough permissions to be here' unless current_admin || current_company
end
CODE CODE CODE
end
これは私がやりたいコードですが、正しいやり方がわかりません。私が実現したいのは、各アクションに before_filter ルールを適用することです。したがって、ユーザーは INDEX アクションにはアクセスできますが、EDIT アクションにはアクセスできない可能性があります。before_filter メソッドは 1 回しか実行されないことはわかっていますが、4 つの before_filter は実行できません。私の英語が下手なので、参考情報として示しています。
current_admin メソッドと current_company メソッドに Devise を使用していることを知っておく必要があります。異なるフィルター (if admin または if company.id = X) やその他のアクションを適用する必要があります。
よろしくお願いします。私はここでかなり行き詰まっています。どんな助けでもありがたいです。
ベストアンサー1
メソッド内で作成しますApplicationController
:
def check_privileges!
redirect_to "/", notice: 'You dont have enough permissions to be here' unless current_admin || current_company
end
そしてコントローラーで次の操作を実行します。
before_filter :check_privileges!, only: [:new, :create, :edit, :save]
または
before_filter :check_privileges!, except: [:index, :show]