Есть ли способ использовать драгоценный камень Rolify в мультитенантной конфигурации?
Мне нравится API Rolify ( https://github.com/RolifyCommunity/rolify), и я хотел бы использовать его в своем приложении, но у меня возникла проблема с поиском чего-либо в его документах или руководствах, которые позволили бы мне определить роль в обеих областях. a params[:account_id] && экземпляр ресурса. Кто-нибудь использовал Rolify таким образом и мог бы посоветовать, как это настроить?
В идеале это будет выглядеть примерно так
user.add_role :moderator, Notes.where(account_id: params[:account_id])
1 ответ
Вы можете добавить роль к конкретному экземпляру следующим образом:
note = Notes.where(account_id: params[:account_id].first
user.add_role(:moderator, note)
У нас есть мультитенантное приложение Rails в производстве, которое использует Acts As Tenant и Rolify для случая использования, как вы описали. ЕстьUser
учетные записи, которые не зависят от какого-либо арендатора, каждый пользователь может иметь несколько Membership
s, таким образом, входите в несколько арендаторов.
Членство каждого пользователя может иметь индивидуальные роли. Для ролей с более низким рейтингом нам нужно было разрешить доступ только к определенным экземплярам, которые могут назначить им более привилегированные участники.
Хороший мультитенантный гем должен заботиться о том, чтобы охватить все модели Rails, которые вы хотите, только одной конкретной организацией, и не позволять любому члену из организации A получать доступ к данным из организации B. Так что действительно не должно быть необходимости использовать что-то вроде params[:account_id]
вручную, если вы хотите определить роль, привязанную к экземпляру ресурса.