【问题标题】:Using ActiveRecord on Multiple Databases在多个数据库上使用 ActiveRecord
【发布时间】:2013-07-30 08:32:29
【问题描述】:

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

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

这是一个例子:

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

【问题讨论】:

标签: ruby-on-rails ruby


【解决方案1】:

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

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

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

还有更多例子here

【讨论】:

  • 你能举个例子吗?
  • 快速提问,调用establish_connection 时是否加载了database.yml?因为我可能必须通过基于 Web 的控制面板动态添加新的数据库连接。
  • 您可以将数据库凭据作为Hash 传递给establish_connection
  • 好吧,亲爱的,这应该与我将要做的完美配合,谢谢!
【解决方案2】:

我不确定您是否可以在运行时执行此操作,因为数据库连接与类(模型)耦合

但是,您可以使不同的类连接到不同的数据库 我不想复制别人的答案,所以看看这个帖子

Connecting Rails 3.1 with Multiple Databases

给他荣誉

祝你好运

【讨论】:

    猜你喜欢
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    相关资源
    最近更新 更多