尝试更改数据库时出错

时间:2017-05-31 21:31:35

标签: ruby-on-rails ruby database ruby-on-rails-4

我按照教程更改数据库,具体取决于子域,子域名必须是系统将连接到的现有数据库的名称,如this tutorial所示,时间为15:30工作得很好,问题来自使用不存在数据库的子域访问系统时,显示以下错误:Cannot open database "another_database" requested by the login. The login failed 并且显示错误不允许访问系统,无论是否使用子域中现有数据库的名称访问它,除非重新启动rails服务器。

这是我在ApplicationController中的代码:

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  before_action :connect_to_database


  def connect_to_user_database(name)
    config = ActiveRecord::Base.configurations["development"].merge("database" => "#{name}")
    ActiveRecord::Base.establish_connection(config)
    #auth = name
    #raise auth.to_yaml #podemos ver los datos que nos ofrece el parametro
  end


  private

  def connect_to_database
    connect_to_user_database(request.subdomains(0).first)
  end

end

1 个答案:

答案 0 :(得分:0)

使用类似于此答案中所做的事情https://stackoverflow.com/a/25592558/8088139 如果数据库不存在,则构建一个优雅地失败的catch情况

类似

def connect_to_user_database(name)
  config = ActiveRecord::Base.configurations["development"].merge("database" => "#{name}")
  ActiveRecord::Base.establish_connection(config)
rescue ActiveRecord::NoDatabaseError
  clear_cache!
  #set response to forbidden
  #log the failure
end

编辑:添加了clear_cache!到NoDatabaseError救援