我第一次使用Devise使用rails,我遇到了一件事:
我在用户控制器中使用提供的authenticate_user!
方法来限制对页面的访问:
before_filter :authenticate_user!, :only => [:edit, :show, :update, :create, :destroy]
但这允许任何已登录的用户访问任何其他用户:edit
操作,我只想限制该用户。我该怎么做?
答案 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