将控制器before_filters的管理功能混合在一起

时间:2010-11-12 21:06:42

标签: ruby-on-rails ruby controller authorization

我正在使用Authologic和一些书面方法来管理用户以及他们在我的应用中可以做些什么。我真的不需要有多个角色的能力,我只需要能够摧毁一些东西。我想知道我是否可以一起破解这个。

在我的“QuestionsController”中,我使用以下过滤器:

  before_filter :require_user, :only => [:edit, :update, :destroy]  # all actions require user to be logged in
  before_filter :init_data     # create a member variable called @post, initialized based on the action
  before_filter :require_owner, :only => [:edit, :update, :destroy] #edit, update, and destroy actions require ownership

我试图找出是否可以使用指定current_user的用户名是否为“bgadoci”的条件来包装这些过滤器,然后不执行过滤器。这是否可能,如果是这样,我应该使用什么语法(对ruby和rails来说是新的一种)。

以下是我现在所提出的第一行语法错误(显然)。

  if :current_user :username => "bgadoci"
   before_filter :require_user, :only => [:edit, :update, :destroy]  # all actions require user to be logged in
   before_filter :init_data     # create a member variable called @post, initialized based on the action
   before_filter :require_owner, :only => [:edit, :update, :destroy] #edit, update, and destroy actions require ownership
  end

1 个答案:

答案 0 :(得分:0)

也许你可以做一个包装那些其他过滤器的过滤器?

before_filter :check_for_me


def check_for_me
  unless current_user.username == 'me'
    before_filter :require_user
    ..
  end
end