设置设计只允许编辑自己的记录?

时间:2010-10-19 08:05:42

标签: ruby-on-rails authentication devise

我在我的Rails应用程序中使用了Devise,但我无法弄清楚如何将其锁定,以便用户只能在用户表和属于该用户的表中编辑自己的记录。

我在这里缺少什么?这是在控制器或模型中完成的吗?

2 个答案:

答案 0 :(得分:3)

我会在current_user的application_controller中创建一个帮助器并删除User.find的使用

创建授权的最简单方法是使用布尔标志(admin true / false)。对于其他简单的解决方案是cancan,正如Yannis或easy_roles KISS所建议的那样。您可以像这样实现编辑操作

def edit
 if current_user.is_admin?
   User.find(params[:id])
 else
    current_user
 end
end

application_controller.rb

def current_user
  UserSession.find
end

要限制用户访问,例如拥有他/她自己的任务的用户,请执行此操作。

def index
  @tasks = current_user.tasks
end

答案 1 :(得分:2)

Devise是一种身份验证解决方案。您现在需要一个授权系统。看看Ryan Bates CanCan(githubrailscasts)。