当前位置:  开发笔记 > 后端 > 正文

如何动态更改Ruby on Rails中所有模型的Active Record数据库?

如何解决《如何动态更改RubyonRails中所有模型的ActiveRecord数据库?》经验,为你挑选了3个好方法。

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

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



1> Jim Puls..:

您也可以轻松完成此操作而无需对任何内容进行硬编码并自动运行迁移:

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)



2> Tilendor..:

您可以通过调用ActiveRecord :: Base.establish_connection(...)随时更改与ActiveRecord的连接

IE:

 ActiveRecord::Base.establish_connection({:adapter => "mysql", :database => new_name, :host => "olddev",
    :username => "root", :password => "password" })


请注意,这将清除您的缓存 - 因此它将为每个表执行'显示表%eachtable%'并显示创建表'.如果您在每个请求上建立新连接,则只会出现问题...

3> Andre Figuei..:

自从这个问题被创建以来已经有一段时间了,但我不得不说还有另一种方式:

conn_config = ActiveRecord::Base.connection_config
conn_config[:database] = new_database
ActiveRecord::Base.establish_connection conn_config

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有