如果用户是当前用户,如何才能使用户编辑操作可用?我正在使用设计。
Devise有这个:
before_action :authenticate_user!, only: [:new, :edit, :update, :destroy], notice: 'you must sign in first!'
但是,如果用户与当前用户相同,那么确保用户不会登录?我想确保其他用户无法修改其他用户帐户。
最好的方法是什么?我应该创建一个新的before_filter
吗?我无法找到任何标准方式。
答案 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
...
答案 1 :(得分:2)
您可以使用devise
提供的def edit
unless current_user
redirect_to home_path, :alert => "Restricted area"
end
end
方法。在这里,您可以阅读更多内容 - current_user method。
<ul>