Авторизуйте действие с помощью CanCan через связь модели - PullRequest
2 голосов
/ 11 апреля 2011

Я использую CanCan и Devise для процессов аутентификации в приложении, и все работает отлично.

Однако у нас есть настройка, в которой пользователи могут создавать списки элементов.

В модели List есть user_id, и с этим отлично работает auth, но право собственности на элементы обрабатывается с помощью отношения Item: has_many Item, а Item фактически не имеет столбца user_id.

Как CanCan справляется с этим?

Я пытался

can :manage, Item do |item|
  item.list.user_id = user.id
end

, но при вводе идентификатора элемента в URL-адресе каждый пользователь получает доступ к каждому элементу независимо от владельца списка.

Я не смог найти ничего, что могло бы охватить это в вики на github Cancan, поэтому надеялся, что кто-то здесь сможет помочь

Ждем комментариев Спасибо

1 Ответ

5 голосов
/ 11 апреля 2011

Вы перепутали = с ==?

can :manage, Item do |item|
  item.list.user_id == user.id
end
...