Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Rails 3.2多数据库_Mysql_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Mysql Rails 3.2多数据库

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

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

问题是:我如何构建模型以使

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_数据库中。