Jac*_*cob 6 ruby-on-rails multi-tenant ruby-on-rails-4 ruby-on-rails-4.2
使用rails引擎时,覆盖视图就像在右侧文件夹中创建新视图一样简单.但是,在创建多租户rails应用程序时,所有租户都驻留在同一个应用程序中(他们不使用引擎),如何覆盖租户的视图.
例如:
App有一个views/static/about_us.haml文件需要为每个租户定制.为每个租户覆盖此文件的最佳方法是什么?
小智 1
我使用的公寓 gem非常适合管理多租户环境。Apartment 可以帮助您管理基于模式的数据库并帮助您完成迁移工作。
该应用程序根据子域使用正确的架构。例如,对于 superclient.mysuperapp.com,rails 将使用超级客户端数据库架构,并且仅在此架构上工作,直到请求完成。
对于多租户视图,在我的例子中,我使用 ApplicationController.rb 中的 before_action 来添加我的自定义视图路径:
def prepend_view_paths
subdomain = request.subdomain
prepend_view_path "app/views/multitenancy/#{subdomain}"
end
Run Code Online (Sandbox Code Playgroud)
在这种情况下,子域是超级客户端。
逻辑是这样的:首先,rails 会在这个路径中寻找视图:“app/views/multitenancy/#{subdomain}”。如果没有找到任何内容,它会继续在列表中的其他路径中查找视图。
希望我的回答对您有所帮助。
| 归档时间: |
|
| 查看次数: |
457 次 |
| 最近记录: |