Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 多租户rails应用程序中租户的自定义视图和资产?_Ruby On Rails_Ruby On Rails 4_Ruby On Rails 4.2_Multi Tenant - Fatal编程技术网

Ruby on 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

使用rails引擎时,覆盖视图就像在正确的文件夹中创建新视图一样简单。但是,当创建一个多租户rails应用程序时,所有租户都驻留在同一个应用程序中(他们不使用引擎),如何覆盖租户的视图呢

例如:

应用程序有一个
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