【发布时间】:2011-08-17 01:37:12
【问题描述】:
我正在组织一个带有单个代码库/应用程序的多租户应用程序,它使用子域来检测租户,然后在 postgres 上运行 SET SCHEMA 来做有趣的事情。
我的问题是某些客户需要对主代码库进行不同级别的自定义。不是很多,但肯定足以让我不想通过添加一堆 if 语句来开始破解主要模型和控制器。
使用视图加载路径覆盖视图很容易......但我的问题是:我如何提供一个好的框架来覆盖或添加基本控制器、模型和助手的功能,以便根据需要为每个租户调整内容?理想情况下,它应该非常无缝且不会侵入主代码,并且应该为组织自定义代码提供一个体面的机制。
我研究了一些选项,包括使用包含/扩展(混合)。问题是在生产中,方法保留在对象中(可以理解)。我已经尝试过混合学 gem 来解决这个问题,但它并没有完全按照我的预期工作,而且它比我想要的更具侵入性,我也不清楚如何将它与模型相关联(在控制器中,我刚刚尝试通过之前/之后过滤器进行混合/取消混合)。
如果有人对如何最好地处理/解决此问题有任何想法,我将非常感谢您的反馈。 FWIW 这是 Rails3
【问题讨论】:
-
Related question here。很想知道从那以后你是否成功了。
标签: ruby-on-rails ruby model-view-controller multi-tenant