Как я могу использовать cancan, чтобы запретить пользователю редактировать профили других пользователей? - PullRequest
1 голос
/ 14 июня 2011

Как я могу установить возможность разрешать пользователю редактировать только свой профиль? Ссылка на редактирование размещается на их собственной странице показа примерно так:

<% 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 Ответ

4 голосов
/ 14 июня 2011

Должно быть:

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

Вам нужно передать фактический экземпляр объекта вместо класса.

...