多租户rails应用中租户的自定义视图和资产?

时间:2015-06-08 07:07:18

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

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

例如:

App有一个views/static/about_us.haml文件,需要为每个租户自定义。为每个租户覆盖此文件的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我使用apartment gem,这对管理多租户环境很有帮助。 Apartment帮助您管理基于模式的数据库,并帮助您完成迁移。

该应用使用正确的架构,具体取决于子域。例如,对于superclient.mysuperapp.com,rails将使用超级客户端数据库模式,并且只有在请求完成后才能在此模式上工作。

对于多租户视图,在我的情况下,我在ApplicationController.rb中使用before_action来 prepend 我的自定义视图路径:

def prepend_view_paths
  subdomain = request.subdomain
  prepend_view_path "app/views/multitenancy/#{subdomain}"
end

在这种情况下,子域是超级客户端。

逻辑是:首先,rails将在此路径中查找视图:“app / views / multitenancy /#{subdomain}”。如果它没有找到任何内容,它会继续在列表中的其他路径中找到该视图。

我希望我的回复会对你有帮助。