我正在使用子域开发多租户应用程序。查看我的控制器
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
ObjectivesController#index
)效果很好! 如果我提出请求
'test.url / goals / 1'(致ObjectivesController#show
)没有
工作。我收到错误:
ObjectivesController#show中的ActiveRecord :: StatementInvalid PG :: UndefinedTable:错误:角色29中不存在关系“目标”:SELECT“目标”。* FROM“目标”WHERE“目标”。“id”= $ 1 LIMIT 1
edit
和destroy
的结果相同。
目标表不存在。我认为这是由于首次运行ObjectiveController#set_obectives
所以它没有在public
架构上找到目标表。我需要先运行ApplicationController#handle_subdomain
来设置正确的架构,然后运行ObjectiveController#set_obectives
。我怎么能这样做?