使用 rails 引擎时,覆盖 View 就像在正确的文件夹中创建新 View 一样简单。但是当创建一个 Multi-Tenancy 的 Rails 应用程序时,所有租户都驻留在同一个应用程序中(他们不使用引擎),如何覆盖租户的 View 。
例如:
应用程序有一个 views/static/about_us.haml
需要为每个租户定制的文件。为每个租户覆盖此文件的最佳方法是什么?
最佳答案
我使用 apartment gem这对于管理 Multi-Tenancy 环境非常有用。 Apartment 帮助您管理基于模式的数据库并帮助您进行迁移。
该应用程序根据子域使用正确的架构。例如,在 superclient.mysuperapp.com 的情况下,rails 将使用 super 客户端数据库模式,并且只会在此模式上工作,直到请求完成。
对于 Multi-Tenancy View ,就我而言,我在 ApplicationController.rb 中使用 before_action 到 前置 我的自定义 View 路径:
def prepend_view_paths
subdomain = request.subdomain
prepend_view_path "app/views/multitenancy/#{subdomain}"
end
在这种情况下,子域是 super 客户端。
逻辑是这样的:首先,rails 会在这个路径中寻找一个 View :“app/views/multitenancy/#{subdomain}”。如果它没有找到任何东西,它会继续在列表中的其他路径中查找 View 。
希望我的回答能帮到你。
关于ruby-on-rails - Multi-Tenancy Rails 应用程序中租户的自定义 View 和 Assets ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30703033/