2016-12-13 8 views
0

Учитывая, что у меня есть роль, определенная как таковые:Получить ресурс для конкретной Rolify роли

User.first.add_role(:admin, Forum.first) 

я могу определить, имеет ли пользователь роль администратора для любого форума с

User.first.has_role?(:admin, :any) 

ли есть способ получить фактический ресурс, на который это указывает? Например, в этом случае я вернусь Forum.first или, возможно, массив ресурсов, если у Пользователя было более одной роли :admin.

+0

Я решил проблему сейчас: 'Forum.find (User.first.roles.where (name:: admin) .map (&: resource_id))', но, вероятно, лучший способ, оставим вопрос открытым – lmerry213

+0

Возможно, вы должны упомянуть ассоциации между указанными моделями. Если форум принадлежит пользователю, у пользователя много ролей. Это должно работать 'user_id = User.first.id' ' Forum.joins (user:: role) .where ('users.id =? AND role.name =?', User_id, 'admin') ' –

+0

Второй Например, должен быть 'User.first.has_role? (: admin, Forum)' as ': any' фактически возвращает true, если пользователь имеет роль администратора для любого ресурса, а не только для форума. – max

ответ

0
Forum.with_role(:admin, current_user) 
# => [ list of Forum instances that have role "admin" bound to them and belong to current_user roles ] 

См. resource roles querying.

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

  • Нет связанных вопросов^_^