我是Active Admin的新手,但据我所知,到目前为止,我觉得这很容易实现。
我有一个带有公寓宝石的应用程序来添加多租户。
我正在为我的应用添加有效管理员。 Apartment使用PostgreSQL模式来隔离数据。因此,例如默认情况下,您在公寓中的模型有一个公共'租客,除非你打电话给Apartment::Tenant.switch!('abc')
。
在我的应用中,我的User
和Company
模型位于公共租户中,其他所有内容都位于租户中。因此,开箱即用的Active Admin工作正常,只是租户模型没有显示任何记录 - 正如他们应该的那样。
我做了一些修改并手动添加了Apartment::Tenant.switch!('abc')
我的一个AA模型文件,并且完美无缺。这是一个理想的解决方案:
AdminUser
日志设置为默认值(比如第一个租户)时AdminUser
会话存储中,因此您可以使用相同的租户数据,直到需要切换为止。我想我可以很容易地做到这一点,但我想知道是否有任何Active Admin特定问题需要解决,如:
AdminUser
有一个单独的会话变量存储可用吗?任何建议都会受到赞赏 - 我会在解决之后将我的最终解决方案/代码发回这篇文章。
答案 0 :(得分:0)
AA是否具有等效的应用程序控制器?将租户切换逻辑与主要切换逻辑保持在一起会很好。
确实,有一个ActiveAdmin :: BaseController,但是宝石作者并没有谈论使用它进行自定义,不知道为什么。对于您正在谈论的逻辑而言,这似乎是个好地方。
我以前从未需要修改它,但here's a blog article from someone who did。
备用AA Devise AdminUser有一个单独的会话变量存储可用吗?
嗯。 Devise使用Warden进行会话管理,支持multiple user 'scopes' logged in simultaneously以及separate session data,如果内存是在我在代码中挖掘的时候提供的,Warden将单独的会话数据放在不同的密钥中相同的cookie。不确定这是不是你的意思,但我确认在我当前使用ActiveAdmin的Rails项目中确实没有为用户和管理员使用不同的cookie。
不是一个明确的答案,而是移动球!