如何将编辑操作限制为仅限当前用户

时间:2015-08-17 04:11:04

标签: ruby-on-rails ruby-on-rails-4 model-view-controller devise

如果用户是当前用户,如何才能使用户编辑操作可用?我正在使用设计。

Devise有这个:

before_action :authenticate_user!, only: [:new, :edit, :update, :destroy], notice: 'you must sign in first!'

但是,如果用户与当前用户相同,那么确保用户不会登录?我想确保其他用户无法修改其他用户帐户。

最好的方法是什么?我应该创建一个新的before_filter吗?我无法找到任何标准方式。

2 个答案:

答案 0 :(得分:2)

我强烈建议您查看 CanCanCan gem来处理这些事情。在这种情况下,您的代码看起来像:

查看:

<% if user_signed_in? %>
  <% if can? :update, @user %>
    # Edit something 
    <%= link_to edit_profile_path(@user), class: 'user' do %>
      Edit your profile
    <% end %>
  <% end %>
<% end %>

在您的用户控制器等中,您将添加以下行,该行将处理用户手动键入浏览器的URL的情况:

<强>控制器:

class UsersController < ApplicationController
   load_and_authorize_resource
   ...

更多信息和文档:https://github.com/CanCanCommunity/cancancan

答案 1 :(得分:2)

您可以使用devise提供的def edit unless current_user redirect_to home_path, :alert => "Restricted area" end end 方法。在这里,您可以阅读更多内容 - current_user method

<ul>