如何使用cancan阻止用户编辑其他用户配置文件?

时间:2011-06-13 20:06:38

标签: ruby-on-rails roles cancan

如何设置允许用户仅编辑自己的个人资料的功能?编辑链接放在他们自己的显示页面中,如下所示:

<% if can? :update, User %>
  <div class="button">
    <%= link_to 'edit my profile', edit_user_path(@user) %>
  </div>
<% end %>

目前的能力如下:

if user.role == "author"
  can :create, Review
  can :update, Review do |review|
    review.try(:user) == user
  end
  can :update, User, :id => user.id
end

我在用户控制器中也有load_and_authorize_resource。

但这不起作用,用户(具有作者角色)仍然可以在所有用户显示页面上查看和使用编辑按钮。

我在这里做错了什么?

非常感谢任何帮助,非常感谢!

1 个答案:

答案 0 :(得分:4)

应该是:

<% if can? :update, @user %>

您需要传递实际的对象实例而不是类。