我正在使用单一代码库/应用程序组织一个多租户应用程序,使用子域名来检测租户,然后在Postgres上运行SET SCHEMA来完成有趣的事情。
我的问题是,某些客户将需要对主代码库进行各种级别的定制。 不算太多,但肯定足以让我不想通过添加大量if语句来开始破坏主模型和控制器。
使用视图加载路径覆盖视图很容易... 但我的问题是:如何为覆盖或添加功能到基本控制器、模型和助手提供一个良好的框架,以根据需要调整每个租户的内容? 理想情况下,它应该非常无缝,并且不会侵入主要代码,并且应该提供一个良好的机制来组织定制代码。
我已经调查了一些选项,包括使用includes/extends(混合)。问题在于,在生产中,方法留在对象中(可以理解)。 我尝试过mixology gem来解决这个问题,但它并没有完全按照我的意图工作,而且比我想象的更具侵入性,我也不清楚如何将其与模型相关联(在控制器中,我只是尝试通过before/after过滤器进行混合/取消混合)。
如果有人对如何最好地解决这个问题有任何想法,我将非常感激您的反馈。顺便说一句,这是Rails3。
我的问题是,某些客户将需要对主代码库进行各种级别的定制。 不算太多,但肯定足以让我不想通过添加大量if语句来开始破坏主模型和控制器。
使用视图加载路径覆盖视图很容易... 但我的问题是:如何为覆盖或添加功能到基本控制器、模型和助手提供一个良好的框架,以根据需要调整每个租户的内容? 理想情况下,它应该非常无缝,并且不会侵入主要代码,并且应该提供一个良好的机制来组织定制代码。
我已经调查了一些选项,包括使用includes/extends(混合)。问题在于,在生产中,方法留在对象中(可以理解)。 我尝试过mixology gem来解决这个问题,但它并没有完全按照我的意图工作,而且比我想象的更具侵入性,我也不清楚如何将其与模型相关联(在控制器中,我只是尝试通过before/after过滤器进行混合/取消混合)。
如果有人对如何最好地解决这个问题有任何想法,我将非常感激您的反馈。顺便说一句,这是Rails3。