Mysql Rails 3.2多数据库
使用Rails 3.2.13,我有一个带有特定通信设备(比如200-300)的应用程序,每个通信设备使用自己的MySQL数据库,命名约定为xy000+device.id(即xy000001、xy000012等)。 每个设备(数据库)都有几个从ActiveRecord::Base继承的模型(表)。当用户登录到应用程序时,他会选择一个要使用的设备。当然,多个同时使用的用户可以使用不同的设备,因此应用程序应该能够一次连接到多个数据库 问题是:我如何构建模型以使Mysql Rails 3.2多数据库,mysql,ruby-on-rails,ruby,activerecord,Mysql,Ruby On Rails,Ruby,Activerecord,使用Rails 3.2.13,我有一个带有特定通信设备(比如200-300)的应用程序,每个通信设备使用自己的MySQL数据库,命名约定为xy000+device.id(即xy000001、xy000012等)。 每个设备(数据库)都有几个从ActiveRecord::Base继承的模型(表)。当用户登录到应用程序时,他会选择一个要使用的设备。当然,多个同时使用的用户可以使用不同的设备,因此应用程序应该能够一次连接到多个数据库 问题是:我如何构建模型以使 ActiveRecord::Base.e
ActiveRecord::Base.establish_connection
打电话?如何根据用户输入选择目标数据库,以便每次使用连接到不同数据库的相同模型
希望解释清楚。如果不是,我可以更精确。。。
谢谢大家! 在database.yml文件中使用您要使用的名称创建连接。例如,如果要将连接命名为产品,则可能有如下连接:
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_数据库中。