2013-04-22 51 views
0

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

的问题是:我怎么能建立模型,使

ActiveRecord::Base.establish_connection 

电话吗?如何根据用户输入选择目标数据库,以便我可以每次使用与不同数据库连接的同一模型?

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

回答

0

在你的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 
+0

感谢您的回复,但不幸的是这种做法是不可能的。正如我所说,我有多个名称不同的数据库。每个模型必须根据用户输入连接到数据库名称 - 因此,在您的示例中,产品模型不能使用:产品适配器,因为它已修复到my_database。 – user980145 2013-04-23 05:22:06

相关问题