Есть ли способ использовать драгоценный камень 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 учетные записи, которые не зависят от какого-либо арендатора, каждый пользователь может иметь несколько Memberships, таким образом, входите в несколько арендаторов.

Членство каждого пользователя может иметь индивидуальные роли. Для ролей с более низким рейтингом нам нужно было разрешить доступ только к определенным экземплярам, ​​которые могут назначить им более привилегированные участники.

Хороший мультитенантный гем должен заботиться о том, чтобы охватить все модели Rails, которые вы хотите, только одной конкретной организацией, и не позволять любому члену из организации A получать доступ к данным из организации B. Так что действительно не должно быть необходимости использовать что-то вроде params[:account_id] вручную, если вы хотите определить роль, привязанную к экземпляру ресурса.

Другие вопросы по тегам