0

我正在使用子域开发多租户应用程序。查看我的控制器

class ApplicationController < ActionController::Base
  before_filter :handle_subdomain

  def handle_subdomain
    @tenant = Tenant.find_by_subdomain(request.subdomain)
    if !@tenant.nil?
      MultiSchema.set_schema_path("#{request.subdomain}, public")
    else
      render_404
    end
  end
end

class ObjectivesController < ApplicationController
  before_action :set_objective, only: [:show, :edit, :update, :destroy]
end
  • 如果我提出请求 'test.url/objectives'(call to ObjectivesController#index) 效果很好!
  • 如果我做请求'test.url/objectives/1'(调用ObjectivesController#show)不起作用。我得到错误:

    ActiveRecord::StatementInvalid in ObjectivesController#show PG::UndefinedTable: 错误:关系“objectives”在字符 29 处不存在:选择“objectives”。* FROM “objectives” WHERE “objectives”。“id”= $1 限制 1

edit和的结果相同destroy。目标表不存在。我认为这是由于第一次运行ObjectiveController#set_obectives,所以它没有在public架构上找到目标表。我需要先运行ApplicationController#handle_subdomain以设置正确的架构,然后运行ObjectiveController#set_obectives​​. 我怎样才能做到这一点?

4

0 回答 0