我是相当新的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”你的权限,以便您可以指定并检查当前用户可采取适当的行动。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top