活跃的管理员和公寓宝石

时间:2016-01-07 21:11:10

标签: ruby-on-rails activeadmin apartment-gem

我是Active Admin的新手,但据我所知,到目前为止,我觉得这很容易实现。

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

我正在为我的应用添加有效管理员。 Apartment使用PostgreSQL模式来隔离数据。因此,例如默认情况下,您在公寓中的模型有一个公共'租客,除非你打电话给Apartment::Tenant.switch!('abc')

在我的应用中,我的UserCompany模型位于公共租户中,其他所有内容都位于租户中。因此,开箱即用的Active Admin工作正常,只是租户模型没有显示任何记录 - 正如他们应该的那样。

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

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

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

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

任何建议都会受到赞赏 - 我会在解决之后将我的最终解决方案/代码发回这篇文章。

1 个答案:

答案 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。

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