2013-03-05 2 views
0

У меня есть пользователь и тема таблицы в моем приложении. Пользователь, создающий тему, обладает полной способностью, и этот пользователь может предоставить возможность другому пользователю получать доступ или редактировать. Как реализовать эту структуру в cancan. я хочу что-то вродерельсы cancan определяют способность для конкретного пользователя

can? :edit, @topic 

can :edit, Topic do |topic| 
//get object @topic i pass above, and check current user has ability to edit this topic 
end 

Я думаю о создании нового имени таблицы topic_share с topic_id и user_id. Много-много отношений между темой и пользователем. Я не знаю, как его реализовать в канкане.

ответ

0

Если у вас есть какой-то номер creator_id в таблице тем, вы можете сделать следующее в cancan (предполагая, что ваша способность вращается вокруг пользовательской записи, а creator_id - это идентификатор пользователя, создавшего тему и тему, принадлежащую пользователю)

can :edit, Topic, creator_id: user.id 
+0

Я не думаю, что это сработает в моем случае. Вы знаете, что многие пользователи могут получать доступ и редактировать темы, если создатель темы предоставляет им возможность. Ваше решение является только создателем темы. Я думаю о создании нового имени таблицы topic_share с topic_id и user_id. Много-много отношений. Я не знаю, как его реализовать в cancan – MQuy

0

Я знаю, что это не прямой ответ, но вы можете захотеть взглянуть на этот камень, я создал: https://github.com/intrepidd/rails-canhaz

это позволяет легко создавать разрешения между любой модели.

Смежные вопросы