Rails&设计:如何验证特定用户?

时间:2011-07-26 11:59:37

标签: ruby-on-rails-3 authentication devise

我第一次使用Devise使用rails,我遇到了一件事: 我在用户控制器中使用提供的authenticate_user!方法来限制对页面的访问: before_filter :authenticate_user!, :only => [:edit, :show, :update, :create, :destroy]

但这允许任何已登录的用户访问任何其他用户:edit操作,我只想限制该用户。我该怎么做?

2 个答案:

答案 0 :(得分:5)

在编辑方法中,您需要检查用户是否拥有记录:

def edit
   @record = Record.find(params[:id])
   if @record.user == current_user
      @record.update_attributes(params[:record])
   else
      redirect_to root_path
   end
end

答案 1 :(得分:3)

您应该查看CanCan等授权。或者像这样创建一个新方法:

# Create an admin boolean column for your user table.

def authenticate_admin!
  authenticate_user! and current_user.admin?
end