32
  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_filtersを実行できないことはわかっています。英語が苦手なため、参照を提供しています。

current_adminメソッドとcurrent_companyメソッドにDeviseを使用していることを知っておく必要があります。別のフィルター(adminまたはcompany.id = Xの場合)およびその他のアクションを適用する必要があります。

事前のおかげで、私はここでかなり立ち往生しています。どんな助けでもありがたいです。

4

1 に答える 1

70

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]
于 2012-04-08T08:23:41.977 に答える