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 规则。因此,也许用户可以访问 de INDEX 操作,但不能访问 EDIT 操作等。我知道 before_filter 方法运行一次,并且我不能运行 4 个 before_filters,由于我的英语不好,我只是提供一些参考。

您一定知道我正在使用 Devise 作为 current_admin 和 current_company 方法。我需要应用不同的过滤器(如果管理员或 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 回答