3

我是 Active Admin 的新手,但从我目前看到的情况来看,我认为这很容易实现。

我有一个带有公寓 gem 的应用程序来添加多租户。

我正在向我的应用程序添加活动管理员。Apartment 使用 PostgreSQL 模式来隔离数据。因此,例如,默认情况下,您在 Apartment 中的模型有一个“公共”租户,除非您调用类似Apartment::Tenant.switch!('abc').

在我的应用程序中,我UserCompany模型在公共租户中,其他一切都在租户中。所以开箱即用的 Active Admin 工作正常,除了租户模型不显示任何记录 - 正如他们应该的那样。

我做了一些修改并手动添加了Apartment::Tenant.switch!('abc')一个 AA 模型文件,效果很好。这是一个理想的解决方案:

  • AdminUser租户中的日志设置为默认值时(比如第一个租户)
  • 在每个租户模型上,可能有一个选择菜单提交参数 (?tenant=abc),然后租户被更改
  • 活动租户可能保存在AdminUser会话存储中,因此您可以在相同的租户数据中工作,直到您需要切换。

我想我自己可以很容易地做到这一点,但我想看看是否有任何我需要解决的 Active Admin 特定问题,例如:

  • AA 是否具有等效的应用程序控制器?将租户切换逻辑与主要逻辑保持在其中会很好。
  • 备用 AA 设计AdminUser有一个单独的会话变量存储可用,对吗?

任何建议将不胜感激 - 一旦我整理出来,我会将我的最终解决方案/代码发布回这篇文章。

4

1 回答 1

0

AA 是否具有等效的应用程序控制器?将租户切换逻辑与主要逻辑保持在其中会很好。

确实,有一个 ActiveAdmin::BaseController,但是 gem 作者没有谈论使用它进行自定义,不知道为什么。似乎是您正在谈论的逻辑的好地方。

我以前从来不需要修改它,但这里有一篇来自做过的人的博客文章

备用 AA Devise AdminUser 有一个单独的会话变量存储可用吗?

嗯。Devise 使用 Warden 进行会话管理,它支持同时登录的多个用户“范围”以及单独的会话数据,如果内存是从我在代码中挖掘时提供的,Warden 会将单独的会话数据放在不同的键中同样的饼干。不确定这是否是您的意思,但我证实它绝对不会在我当前使用 ActiveAdmin 的 Rails 项目中为用户和管理员使用不同的 cookie。

不是一个确定的答案,而是移动球!

于 2016-01-07T21:39:12.177 回答