簡體   English   中英

Ruby on Rails:Devise + Cancan-如何編輯其他用戶?

[英]Ruby on Rails: Devise + Cancan - How can I edit other users?

我只是用Cancan為用戶角色設置了Devise。 我認為自己走在正確的軌道上,但是我遇到了一種我認為缺少小事情的情況。

我希望任何具有角色: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 %>

users_controller.rb ... def edit @user = User.find(params [:id])結束

  def update
    authorize! :assign_roles, @user if params[:user][:assign_roles]
    if @user.update_attributes(params[:user])
      flash[:success] = "Profile updated"
      sign_in @user
      redirect_to @user
    else
      render 'edit'
    end
  end

ability.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!

到我的users_controller.rb文件,現在它知道我是管理員,這意味着什么。 我只是一時興起地添加了它,但是到目前為止,我對Devise / Cancan所學的一切都來自Wiki:

https://github.com/ryanb/cancan/#wiki-readme

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM