【发布时间】:2016-12-12 07:38:42
【问题描述】:
我使用 apartment 和 devise gem 创建了一个多租户应用程序。由于我使用的是 postgresql,apartment gem 将为每个租户创建单独的架构。我的数据库是几个表,user 表在公共命名空间中,而pages 表在每个租户特定的模式中。我可以分别登录每个租户,并且可以为每个租户的 pages 表创建单独的记录。
现在,我希望这些页面能够以类似tenant1.example.com/page-slug-here 的格式访问,为此我在routes.rb 文件中遵循以下规则:
Page.where.not(slug: nil).all.each do |page|
get "/#{page.slug}", controller: "pages", action: "show", id: page.id
end
当应用程序是单租户时,这些路由规则工作正常,但在多租户中它不工作并且抛出“无路由匹配”错误。
我的猜测是,上述路由规则中的数据库调用正在查看 public 架构而不是特定于租户的架构。如何解决这个问题?
【问题讨论】:
标签: ruby-on-rails ruby postgresql routing multi-tenant