在我们的程序中,每个客户都有自己的数据库.我们通过邮箱给他们发送一个链接,将他们连接到他们的数据库.该链接包含一个GUID,该GUID让程序知道要连接到哪个数据库.

如何以动态和编程方式将ActiveRecord连接到正确的数据库?

推荐答案

您还可以轻松完成这项工作,而无需硬编码任何内容,并自动运行迁移:

customer = CustomerModel.find(id)
spec = CustomerModel.configurations[RAILS_ENV]
new_spec = spec.clone
new_spec["database"] = customer.database_name
ActiveRecord::Base.establish_connection(new_spec)
ActiveRecord::Migrator.migrate("db/migrate_data/", nil)

我发现,在特定型号上重新建立旧连接很有用:

CustomerModel.establish_connection(spec)

Database相关问答推荐

在GridDB中使用存储过程失败

数据库 struct 建议

MySQL主键:UUID / GUID vs BIGINT(时间戳+随机)

Phonegap如何在android上保存永久数据

我应该使用哪种数据库模型在运行时动态修改实体/属性?

Oracle SQL 开发人员中的 DB2 数据库

管理数据库中的产品计数

如何将 PHP 会话数据保存到数据库而不是文件系统中?

Cassandra 还是 MySQL/PostgreSQL?

授予对具有特定前缀的多个表的权限

Oracle 数据库统计信息应该多久运行一次?

Postgresql 从多个表中删除多行

The method setListAdapter(ArrayAdapter) is undefined for the type create

主键和主属性有什么区别?

如何在一行中显示 redis 中的所有键?

Android 上的测试数据库:ProviderTestCase2 还是 RenamingDelegatingContext?

Twisted + SQLAlchemy 和最好的方法

数据库触发器的命名约定

是否有用于 postgresql 的数据可视化工具,它也能够显示模式间关系?

不同类型的SQL之间的区别?