在Rails 4中的父控制器和子控制器中的before_filter顺序

时间:2013-08-14 16:08:09

标签: ruby-on-rails inheritance ruby-on-rails-4 controllers before-filter

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

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 / goals'(请致电 ObjectivesController#index)效果很好!
  • 如果我提出请求 'test.url / goals / 1'(致ObjectivesController#show)没有 工作。我收到错误:

    ObjectivesController#show中的ActiveRecord :: StatementInvalid PG :: UndefinedTable:错误:角色29中不存在关系“目标”:SELECT“目标”。* FROM“目标”WHERE“目标”。“id”= $ 1 LIMIT 1

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

0 个答案:

没有答案