establish_connection不会带来模型关联

时间:2013-01-23 20:58:03

标签: ruby-on-rails multiple-databases

问题:我必须连接多个数据库,具体取决于从头开始选择的服务器。如果我有一个具有userclasses关联的客户端表,我可以很好地连接到其中一个数据库并查询客户端,但是如果我@clients.userclasses我得到一个错误,表明表userclasses不存在,因为它恢复原始数据库。

以下代码:

class Connection < ActiveRecord::Base
  self.abstract_class = true
end

class Client < Connection
  has_many :userclasses, :dependent => :destroy
end

class Userclass < Connection
  belongs_to :client
  self.table_name = "userclasses"
end

class ClientsController < ApplicationController
  before_filter :set_server
  def show
    @client = Client.find(params[:id])
    respond_to do |format|
      format.html{ render html: @client}
      format.xml { render xml: @client }
    end
  end
  private

  def set_server
    @server = Server.find(params[:server_id])
    unless @server.nil? or @server.database.nil?
      Client.establish_connection(ActiveRecord::Base.configurations["#{@server.database}"])
    end
  end

end

1 个答案:

答案 0 :(得分:1)

我最终只是将整个ActiveRecord连接切换到我需要的连接,而不是仅尝试切换我正在使用的模型。

def set_server
    @server = Server.find(params[:server_id])
    unless @server.nil? or @server.database.nil?
      ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations["#{@server.database}"])
    end
  end