我是 Active Admin 的新手,但从目前为止我所看到的情况来看,我认为这很容易实现。
我有一个带有公寓宝石的应用程序来添加多租户。
我正在向我的应用程序添加活动管理员。 Apartment 使用 PostgreSQL 模式来隔离数据。例如,默认情况下,公寓中的模型有一个“公共”租户,除非您调用类似的内容Apartment::Tenant.switch!('abc')
.
在我的应用程序中我的User
and Company
模型在公共租户中,其他一切都在租户中。因此,开箱即用的 Active Admin 工作正常,只是租户模型不显示记录 - 正如它们应该的那样。
我做了一些修改并手动添加Apartment::Tenant.switch!('abc')
我的 AA 模型文件之一,效果非常好。这是一个理想的解决方案:
- 当。。。的时候
AdminUser
租户中的日志被设置为默认值(例如第一个租户)
- 在每个租户模型上,可能有一个选择菜单,用于提交参数 (?tenant=abc),然后更改租户
- 活跃租户可能持续存在
AdminUser
会话存储,以便您可以使用相同的租户数据,直到需要切换为止。
我想我自己可以很容易地做到这一点,但我想看看是否有任何我需要解决的活动管理特定问题,例如:
- AA 是否有相当于应用程序控制器的功能?最好将租户切换逻辑保留在其中,而不是主要逻辑。
- 替代 AA 设计
AdminUser
有一个单独的会话变量存储可用吗?
任何建议将不胜感激 - 一旦我解决了问题,我会将我的最终解决方案/代码发布回这篇文章。
AA 是否有相当于应用程序控制器的功能?最好将租户切换逻辑保留在其中,而不是主要逻辑。
确实,有一个 ActiveAdmin::BaseController,但是 gem 作者没有谈论使用它进行定制,不知道为什么。对于您正在谈论的逻辑来说,这似乎是一个好地方。
我以前从未需要修改它,但是这是某人的博客文章 https://viget.com/extend/8-insanely-useful-activeadmin-customizations.
备用 AA Devise AdminUser 有一个单独的会话变量存储可用,对吧?
嗯。 Devise 使用 Warden 进行会话管理,它支持多个用户“范围”同时登录 https://github.com/hassox/warden/wiki/Scopes也单独的会话数据 https://github.com/hassox/warden/wiki/Authenticated-session-data,如果我没有记错的话,当我仔细研究代码时,Warden 将单独的会话数据放在同一个 cookie 中的不同键中。不确定这是否是您的意思,但我验证了在我当前使用 ActiveAdmin 的 Rails 项目中,它绝对不会为用户和管理员使用不同的 cookie。
不是一个明确的答案,但移动球!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)