【问题标题】:Rails 3.2 multiple databasesRails 3.2 多数据库
【发布时间】:2013-04-22 16:38:45
【问题描述】:

使用 Rails 3.2.13 我有一个带有某些通信设备(比如 200 - 300)的应用程序,每个设备都使用自己的 MySQL 数据库,命名约定如 xy000 + device.id(即 xy000001、xy000012 等)。 每个设备(数据库)都有几个继承自 ActiveRecord::Base 的模型(表)。当用户登录到应用程序时,他选择了他想要使用的设备。当然,多个同时用户可以使用不同的设备,因此应用程序应该能够同时连接到多个数据库。

问题是:如何构建模型来制作

ActiveRecord::Base.establish_connection 

打电话?如何根据用户输入选择目标数据库,以便每次都可以使用连接到不同数据库的相同模型?

希望解释清楚。如果没有,我可以更准确... 谢谢!

【问题讨论】:

    标签: mysql ruby-on-rails ruby activerecord


    【解决方案1】:

    在您的 database.yml 文件中使用您想要使用的名称创建一个连接。例如,如果您将连接命名为 products,您可能会有如下连接:

    products:
      adapter: mysql2
      encoding: utf8
      reconnect: false
      database: my_database
      pool: 5
      username: root
      password: abc123
      host: 127.0.0.1
    

    然后在您的模型中,扩展 ActiveRecord::Base 并像这样建立连接:

    class Product < ActiveRecord::Base
      establish_connection :products
    end
    

    【讨论】:

    • 感谢您的回复,但不幸的是这种方法是不可能的。正如我所说,我有多个名称不同的数据库。每个模型都必须根据用户的输入连接到数据库名称 - 因此,在您的示例中,产品模型不能使用 :products 适配器,因为它固定到 my_database。
    猜你喜欢
    • 2012-03-31
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多