Ruby on rails RubyonRails:designe+;Cancan-如何编辑其他用户?

Ruby on rails RubyonRails:designe+;Cancan-如何编辑其他用户?,ruby-on-rails,devise,cancan,Ruby On Rails,Devise,Cancan,我刚刚用Cancan为用户角色设置了Desive。我想我走对了方向,但我只是遇到了一个情况,我觉得我错过了一些小东西 我希望任何角色为:admin的用户都能够编辑其他所有用户的配置文件/角色。我已经正确设置了路由,但是当我点击其他用户的链接时,我会被重定向 _user.html.erb <% @users.each do |user| %> <li> <%= gravatar_for user, size: 52 %>

我刚刚用Cancan为用户角色设置了Desive。我想我走对了方向,但我只是遇到了一个情况,我觉得我错过了一些小东西

我希望任何角色为:admin的用户都能够编辑其他所有用户的配置文件/角色。我已经正确设置了路由,但是当我点击其他用户的链接时,我会被重定向

_user.html.erb

<% @users.each do |user| %>
    <li>
        <%= gravatar_for user, size: 52 %>
        <%= link_to user.name, user %>
        <% if can? :assign_roles, @user %>
            | <%= link_to "delete", user, method: :delete, confirm: "Delete user?" %>
            | <%= link_to "edit", edit_user_path(user) %>
        <% end %>
    </li>
<% end %>
能力.rb

def initialize(user)
     can :assign_roles, User if user.admin?
     can :manage, :all if user.is? :admin
end
我一整天都在修改这个代码,我甚至可能在兜圈子


任何帮助都将不胜感激。

我知道了。尽管我能够用所示的逻辑限制html/css,但我无法限制模型/控制器交互。我有多个控制器,我正在处理的那个没有身份验证检查。换句话说,我补充道

 before_filter :authenticate_user!
对于我的用户_controller.rb文件,现在它知道我是管理员,这意味着什么。我只是一时兴起才加上这个,但到目前为止,我从维基上了解到的关于Desive/Cancan的一切:

 before_filter :authenticate_user!