コントローラ内の特定のアクションのための Rails before_filter 質問する

コントローラ内の特定のアクションのための Rails before_filter 質問する
  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]

おすすめ記事