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