ruby-on-rails - Multi-Tenancy Rails 应用程序中租户的自定义 View 和 Assets ?

标签 ruby-on-rails ruby-on-rails-4 ruby-on-rails-4.2 multi-tenant

使用 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/

相关文章:

mongoid - 如何重写 ActiveJob 以防止序列化错误?

ruby-on-rails - Rails 4.2 没有读取 Database.yml 的环境变量

ruby-on-rails - 测试字符串是否无内容

ruby-on-rails - Windows 7 64 位 : Could not find a valid gem 'compass' (>= 0), 这里就是为什么 : Unable to download data from https://rubygems. org/

javascript - 如何将ajax请求的成功响应传递给html模板?

mysql - 如何在 Rails 中保存日期选择字段

ruby-on-rails - 在 Rails 对象上呈现不同部分的最佳方式?

ruby-on-rails - LESS CSS 预处理器 : Is there a way to map a single color to an rgb and rgba definition?

ios - 在 iPhone 上登录 Facebook。使用 Rails 后端进行身份验证 (Devise+Omniauth)

ruby-on-rails-4 - 在 ActiveAdmin 中重命名参数/字段