Ruby on rails 连接多个数据库轨道

Ruby on rails 连接多个数据库轨道,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-4,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 4,Ruby On Rails 3.2,需要基于客户端连接多个数据库 我找到了切换到模型中另一个数据库的解决方案 在用户模型中 class User < ActiveRecord::Base SupportBase.new.support_db_connection(self) end 这有助于我切换到数据库支持数据库 但我需要动态更改数据库名称。 如何将用户模型中的数据库_名称传递给该方法 SupportBase.new.support_db_connection(self,database_name) 或者是否有其他

需要基于客户端连接多个数据库

我找到了切换到模型中另一个数据库的解决方案

在用户模型中

class User < ActiveRecord::Base
  SupportBase.new.support_db_connection(self)
end
这有助于我切换到数据库支持数据库

但我需要动态更改数据库名称。 如何将用户模型中的数据库_名称传递给该方法

SupportBase.new.support_db_connection(self,database_name)

或者是否有其他方法可以做到这一点。

将配置保存在一个位置数据库。yml

development:
  adapter: postgresql
  other stuff...

production:
  adapter: postgresql
  other stuff..

external:
.....
然后创建一个类

class SupportBase < ActiveRecord::Base
  establish_connection(:external)
  self.table_name = "your_table"
end
我认为这会使备用数据库连接保持打开状态,这对性能是一件好事,同时也允许您使用AR

关于动态:在database.yml中创建尽可能多的与类关联的环境。你将拥有连接

请查看我的帐户以了解更多信息


编辑:在数据库上动态加载时,建议将新配置写入
数据库.yml
文件,然后重新加载该文件

使用活动记录。建立连接方法在Rails中的两个DB之间切换(如果您有这两个DB的详细信息)

这是密码

ActiveRecord::Base.establish_connection(
 :adapter  => "postgres",
 :host     => "host",
 :username => "myuser",
 :password => "mypass",
 :database => "somedatabase"
)

使用ar八达通gem。这对于这个场景非常有用。

您已经标记了3、3.2、4个rails版本。谢谢您的帖子。在这里,我们如何将数据库设置为基于客户端的动态“外部”。来自[x.example.com]的请求需要从x\u数据库获取数据,[y.example.com]需要从y\u数据库获取数据,等等。如何根据SupportBase中的每个请求进行区分。rbI需要根据请求在n个数据库之间切换。子域,是否有任何方法可以做到这一点。
SupportBase.first 
ActiveRecord::Base.establish_connection(
 :adapter  => "postgres",
 :host     => "host",
 :username => "myuser",
 :password => "mypass",
 :database => "somedatabase"
)