在多个数据库上使用ActiveRecord

我正在编写一个与预先存在的系统集成的工资单系统。 原始系统有一个处理用户管理和一些全局配置的主数据库,下面有多个数据库,每个数据库在结构上相同,基本上每个数据库都是一个公司工资单数据库,所有这些数据库都绑定到主数据库,因为它属于父数据库公司拥有多家子公司,每家公司都有自己的人力资源部

我想知道的是,如果有任何方法可以,基于cookie或其他方法存储他们希望连接的公司,使用beforefilter根据输入动态更改ActiveRecord的目标数据库?

这是一个例子:

用户A登录到站点,页面加载用户有权访问的可用公司,用户将选择公司,他们在该公司拥有管理员权限,他们添加员工,在该操作运行之前,rails将切换连接到相应的数据库然后添加记录。

您可以使用ActiveRecord :: Base#establish_connection连接到所需的数据库。

您可以将db凭据作为Hash传递给establish_connection

 establish_connection( adapter: 'mysql2' encoding: 'utf8' pool: 5 username: 'me' password: 'mypassword' ) 

这里有更多的例子

我不确定你能否在运行时完成它,因为数据库连接已耦合到类(模型)

但是,你可以让不同的类连接到不同的数据库我不想复制别人的答案,所以只看这篇文章

将Rails 3.1与多个数据库连接

给他信用

祝好运