繁体   English   中英

如何在 Ruby on Rails 应用程序中编辑其他用户的名称?

How to edit other user's name in a Ruby on Rails application?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

class UsersController < ApplicationController
  
    before_action :user_logged_in, only: [:edit ,:update, :destroy]
    before_action :check_admin, only: [:index]
    before_action :check_correct_user, only: [:edit ,:update] 


    def edit

    @user=User.find(params[:id])
    
    end


    def update
    @user=User.find(params[:id])
    if @user.update(user_req)
    flash[:success]="Profile Updated"
    redirect_to users_path 
    else
        render 'edit'
    end
   end 


   private



   def user_req
        
params.require(:user).permit(:name,:email,:password,:password_confirmation)
   end



    def check_admin
    
    redirect_to(root_url) unless current_user.admin?
    flash[:danger]="Only admin can see users"
    
  
    end

    def check_correct_user
      @user = User.find(params[:id])
      redirect_to(root_url) unless @user == current_user and current_user.admin?
    end

我的索引

<%= provide(:title, "All users") %>

所有用户的列表

<ol>
   
<%= render @users %>

</ol>

我的用户.html.erb

  •  <%= link_to user.name, user %> <% if current_user.admin? %> <%= link_to "delete this user",user, method: :delete, data:{confirm:"Do you want to delete this?"} %> <%= link_to "Update Profile",edit_user_path() %> <%end%>
  • 1 个回复

    正如评论中所建议的,您有一个检查可以防止用户编辑其他用户,特别是这部分:

    def check_correct_user
      @user = User.find(params[:id])
      redirect_to(root_url) unless @user == current_user and current_user.admin?
    end
    

    因此,就目前而言,如果您是管理员,则只能编辑自己的个人资料 如果您希望用户能够编辑他们自己的个人资料并允许管理员编辑任何个人资料,那么您应该将您的检查更改为 OR 语句:

    @user == current_user || current_user.admin?
    

    编辑

    意见

    <%= link_to "Update Profile",edit_user_path(user) %>
    
    1 如何在应用程序中以其他用户身份运行应用程序

    我有一个奇怪的要求-我有很多运行我的应用程序的用户,我需要让该应用程序知道谁在运行它。 这根本不是问题,我可以很好地捕获此信息。 诀窍在于,应用程序需要访问受限制的网络共享-运行该应用程序的所有用户都没有权限在该处执行任何操作。 那里有很多工作-读取文件,写入文件,并且由于这是WPF应 ...

    2 使用其他用户在crontab中启动应用程序

    我想为我们的tomcat创建一个小的监视脚本。 但是我遇到了一些问题,也许您可​​以给我一些提示。 首先,我们的tomcat必须以特殊的本地用户身份启动,我们将其称为local_user,在crontab中,我尝试像这样更改用户角色(一个简单的演示): 但是我发现aaa可以打 ...

    4 如何在应用程序中为其他用户处理特定用户生成内容的访问/可见性控制?

    我真的被我正在尝试完成的当前任务所困扰。 如果这个问题的格式没有帮助,请原谅我,因为当我卡住并且还没有提出关于 SO 的问题时,我通常能够在网上的某个地方找到足够的资源。 目标在一个由用户生成内容组成的平台上,如何根据与内容的原始创建者的关系来实现特定的访问控制? 如果创建者通过将用户添加到列表来 ...

    5 如果其他用户打开应用程序,如何在txt文件中写入字符串并将其用于消息?

    我在txt文件中写入有问题。 我的点子: 我想加载表单并创建一个打开的文件。 如果窗体关闭,文件也将关闭。 在Form_load方法中,我创建了第二个文件,其中包含用户名和机器名,我希望将其写入第二个文件(user_log)。 如果其他用户启动该应用程序,我希望他看到一个消息框 ...

    6 通过SSH为其他用户打开图形应用程序

    我很抱歉以前没有问过这个问题,但是我真的不知道自己能够进行研究的词汇。 假设我有一台Linux机器(在我的情况下是Raspberry Pi上的Raspbian)连接到监视器。 如果我将鼠标插入了这台计算机,则可以双击Scratch,然后将其打开并在该监视器上可见。 现在说我没有用鼠 ...

    2014-02-02 23:20:34 2 70   linux
    7 如何关闭其他用户打开的Outlook应用程序

    我有一个情况,我有一个使用OUTLOOK发送邮件的应用程序,问题是我正在尝试从以管理员打开的应用程序发送邮件它抛出异常 由于以下错误,检索具有CLSID {0006F03A-0000-0000-C000-000000000046}的组件的COM类工厂失败:80080005服务器执行失败 ...

    2014-02-21 12:20:45 2 770   c#
    8 其他用户的安装Metro应用程序包

    我的PC上有两个注册用户,通过Admin帐户上的sideloader安装软件包没有问题,但是当我尝试在其他帐户上安装软件包时,什么也没发生(我的意思是没有安装,尽管在sideloader中我得到的信息是“ (它已成功安装)。我在做错什么吗?或者还有其他解决方案可以解决此问题。 (在第二个帐 ...

    9 以其他用户身份访问Meteor应用程序

    我最近更新了代码的某些部分,并希望检查它们是否与生产数据库配合使用,该数据库针对不同用户具有不同的数据集。 但是我只能以自己的用户身份访问该应用程序。 如何通过另一个用户的眼光看Meteor应用程序? ...

    10 将Winforms应用程序部署到其他用户

    我正在寻找一种将我创建的winforms项目发送给朋友的方法。 有人可以告诉我最简单的方法(或示例)将其转换为.exe,如果可以的话,这样我就可以摆脱困境。 ...

    暂无
    暂无

    声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

     
    粤ICP备18138465号  © 2020-2022 STACKOOM.COM