Как написать CanCanCan Ability для пользователя, чтобы читать только свои данные? - PullRequest
0 голосов
/ 12 февраля 2019

Как вы ограничиваете доступ пользователей, чтобы пользователь мог только читать свою собственную запись?

Я пробовал:

def initialize(user)
  can :read, User, :id => user.id

и это:

def initialize(user)
  can :read, user

, но я все еще могу получить доступ к каждому пользователю в индексах и шоу.У меня есть authorize_resource в UsersController.

Соответствующая документация для справки: https://github.com/CanCanCommunity/cancancan/wiki/Defining-Abilities

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Кажется, что добавление

authorize! :show, @user

в действие show и

@users = User.accessible_by(current_ability)

в действие index решает мою проблему, используя:

def initialize(user)
  can :read, User, :id => user.id

Я могуТеперь посмотрим, что я должен был использовать load_and_authorize_resource, а не просто authorize_resource, поскольку он бы автоматически добавил их.

0 голосов
/ 12 февраля 2019
:read != :show

:read == [:show, :index]

К сожалению, у меня нет установки для тестирования, поэтому это выстрел в темноте.

can :show, User, :id => user.id
...