我在我的Rails应用程序中使用了Devise,但我无法弄清楚如何将其锁定,以便用户只能在用户表和属于该用户的表中编辑自己的记录。
我在这里缺少什么?这是在控制器或模型中完成的吗?
答案 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(github,railscasts)。