ruby-on-rails – 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方法运行一次,我不能运行4 before_filters,我只是给一些参考,因为我可怜的英语。

你必须知道我使用Devise的current_admin和current_company方法。
我需要应用不同的过滤器(如果admin或如果company.id = X)和其他操作。

感谢提前,我很抱歉在这里。
任何帮助将不胜感激。

最佳答案
在您的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]

转载注明原文:ruby-on-rails – Rails before_filter用于控制器中的特定操作 - 代码日志