限制on Rails和制定行动(编辑/删除)与红宝石的最佳方式
-
26-09-2019 - |
题
我是相当新的Ruby on Rails和现在我做一个简单的应用程序。在这个应用程序,用户可以创建多个项目,我使用设计一种认证。 Ofcourse我想确保你是为了要删除项目(球队,球员等),我做到这一点车主现在是:
def destroy
@team = Team.find(params[:id])
if current_user.id == @team.user_id
@team.destroy
redirect_to(teams_url, :notice => 'The team was deleted.')
else
redirect_to root_path
end
end
这是最好的办法吗?我在想放的方法在模型中,但我不知道我可以从那里访问CURRENT_USER。我也在思考一个before_filer,是这样的:
before_filter :check_ownership, :only => [:destroy, :update]
我这种情况下,如果我想代码的所有对象只有一个方法(所有对象,这涉及到具有“USER_ID” -field)
解决方案
在我的应用控制器我把:
before_filter :authorize
def authorize
false # Or use code here to check if user is admin or not
end
然后我重写在我的实际控制在authorize方法以允许访问各种动作。
其他提示
您正在寻找您的身份验证(色器件)之上的授权解决方案
您无法在模型中获取当前用户没有。我已经使用 Makandra宙斯盾获取授权成功了相当数量。它允许你创建角色的不同归因于每个角色的权限。该文档是非常好,我知道它正常工作与设计,这是相当无关的那个样子,我也有间隙用它。它还传递了一个隐含的“CURRENT_USER”你的权限,以便您可以指定并检查当前用户可采取适当的行动。
不隶属于 StackOverflow