Ruby on rails 多租户rails应用程序中租户的自定义视图和资产?
使用rails引擎时,覆盖视图就像在正确的文件夹中创建新视图一样简单。但是,当创建一个多租户rails应用程序时,所有租户都驻留在同一个应用程序中(他们不使用引擎),如何覆盖租户的视图呢 例如: 应用程序有一个Ruby on rails 多租户rails应用程序中租户的自定义视图和资产?,ruby-on-rails,ruby-on-rails-4,ruby-on-rails-4.2,multi-tenant,Ruby On Rails,Ruby On Rails 4,Ruby On Rails 4.2,Multi Tenant,使用rails引擎时,覆盖视图就像在正确的文件夹中创建新视图一样简单。但是,当创建一个多租户rails应用程序时,所有租户都驻留在同一个应用程序中(他们不使用引擎),如何覆盖租户的视图呢 例如: 应用程序有一个views/static/about_us.haml文件,需要为每个租户定制该文件。为每个租户覆盖此文件的最佳方式是什么?我使用的是,它非常适合管理多租户环境。公寓帮助您管理基于模式的数据库,并帮助您进行迁移 应用程序根据子域使用正确的架构。例如,在superclient.mysupera
views/static/about_us.haml
文件,需要为每个租户定制该文件。为每个租户覆盖此文件的最佳方式是什么?我使用的是,它非常适合管理多租户环境。公寓帮助您管理基于模式的数据库,并帮助您进行迁移
应用程序根据子域使用正确的架构。例如,在superclient.mysuperapp.com的情况下,rails将使用superclient数据库模式,并且在请求完成之前仅在此模式上工作
对于多租户视图,在我的情况下,我使用ApplicationController.rb中的before_操作来预处理我的自定义视图路径:
def prepend_view_paths
subdomain = request.subdomain
prepend_view_path "app/views/multitenancy/#{subdomain}"
end
这里的子域是超级客户机
逻辑是这样的:首先,rails将在以下路径中查找视图:“app/views/multi-tenance/#{subdomain}”。如果没有找到任何内容,它将继续在列表中的其他路径中查找视图
我希望我的回答能对您有所帮助。看看这个名字,听起来像是一个完全可以定制的页面。在应用一些健全性检查以防止XSS等之后,我会以某种丰富的形式保存租户的自定义页面;并在没有HTML转义的情况下显示它。否则,例如,如果有几个定义良好的租户,则每个租户都有不同的文件/文件夹:
views/tenant1/static/about_us.haml
,views/tenant2/static/about_us.haml
。