- 注意:请注意这是否是问题的最佳标题/是否愿意接受编辑建议以获得 future 值(value)*
我有一个 Multi-Tenancy Rails 应用程序,它允许客户使用他们自己的自定义 TLD。所以我可以:
www.clientA.com
www.clientB.com
www.clientC.com
等....
无论好坏,我的数据库 (postgres) 都有一个租户表,它有大约 60 列,每个租户都有各种设置和配置。有些只是标志,有些是大文本值。
在 application_controller.rb
中,我有一些逻辑来解析 URL,根据域查询租户表并实例化一个 @current_tenant
对象。 @current_tenant
对象在页面的整个生命周期中都可用。这发生在每个。单例的。页。我的应用程序。
虽然我有一些重型缓存,但我仍然觉得这种设计很不对,我相信它可以改进。
有这方面的最佳实践吗?处理@current_tenant 对象的最佳模式是什么?我担心内存管理。
最佳答案
您的 current_tenant
与 Rails 应用程序中普遍存在的 current_user
没有什么不同。
停止微优化。除非你对它进行了基准测试并且它显示出是一个主要瓶颈(事实并非如此,我可以向你保证)。
任何微小的性能改进(如果有的话)都会被增加的代码复杂性、缓存问题等所抵消。
做。不是。做。那。 ;)
不过有一件事,不要执行分配 @current_tenant
的 before_filter,而是将 current_tenant
方法添加到 application_controller
(或其中之一它的关注点)将为请求的其余部分缓存结果:
def current_tenant
@current_tenant ||= ....
end
关于ruby-on-rails - 如何处理 Rails 应用程序中重用的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27140410/