在哪个控制器的操作更好地检查用户权限?

时间:2012-07-21 13:49:18

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

在“”或“创建”中? 在“修改”或“更新”?

我查一下这行:

correct_user(@car.user) if not current_user.admin?

其中

def correct_user(user)
   redirect_to root_path if current_user != user
end

2 个答案:

答案 0 :(得分:2)

如果这些操作都需要管理员权限,那么您最好使用之前的过滤器。

before_filter :correct_user,  :only => [:new, :create, :edit, :update]

答案 1 :(得分:1)

如果用户没有权限,则无法访问每个地方。

我会构造代码,以便您不必在操作中编写它:

before_filter :load_car, :redirect_unless_correct_user!, :except => :index

protected
def load_car
  @car = Car.find(params[:car_id])
end

def redirect_unless_correct_user!
  redirect_to(root_path) unless (current_user == @car.user) || user.admin?
end