#ruby-on-rails-3 #cancan
#ruby-on-rails-3 #канкан #cancan
Вопрос:
Я использую CanCan и Devise для процессов авторизации в приложении, и все работает отлично.
Однако у нас есть настройка, в которой пользователи могут создавать списки элементов.
Модель списка имеет идентификатор пользователя, и с этим авторизация работает нормально, но владение элементами обрабатывается через связь List :has_many Item, а у элемента фактически нет столбца user_id .
Как CanCan справляется с этим?
Я пытался
can :manage, Item do |item|
item.list.user_id = user.id
end
но ввод идентификатора элемента в URL-адресе дает каждому пользователю доступ к каждому элементу, независимо от владельца списка.
Я не смог найти ничего, что, казалось, охватывало бы это в wiki на github Cancan’s, поэтому надеялся, что кто-нибудь здесь сможет помочь
С нетерпением жду комментариев, спасибо
Ответ №1:
Вы перепутали =
с ==
?
can :manage, Item do |item|
item.list.user_id == user.id
end
Комментарии:
1. Я официально идиот … не могу поверить, что пропустил это. Просто показывает, что после нескольких часов поиска чего-то иногда просто не видно леса за деревьями. Спасибо, что так мягко указали на очевидное 🙂