Rails 4每种型号的数据库

时间:2014-03-15 10:38:45

标签: mysql ruby-on-rails database activerecord ruby-on-rails-4

我正在构建一个Rails 4应用程序并试图为不同的模型建立单独的数据库。

例如;
- 用户模型将连接到192.168.1的数据库。 2
- 汽车模型将连接到192.168.1的数据库。 3
- 图书模型将连接到192.168.1的数据库。 4

我怎样才能做到这一点?我一直在寻找这个地方,但还没找到我想要的东西...... https://devcenter.heroku.com/articles/concurrency-and-database-connections

DBCharmer插件似乎是用'switch_connection_to'来做的但是它似乎每次都切换整个数据库连接并且不使用持久连接...
- >他们提到'establish_connection',但我无法弄清楚如何使用这个/:

感谢您的帮助!

仅供参考:这是使用Mysql btw,但我认为Sqlite或postgreSQL的解决方案可以以相同的方式工作。


修改

我在我的模型中测试了'establish_connection',这很有效。但我希望有更好的方法,因为在执行'rake db:migrate'时,db迁移不会被路由到正确的数据库

右?

所以,如果这是正确的,那么我应该手动将DB模式导出到另一个数据库中吗?

2 个答案:

答案 0 :(得分:1)

您可以在development中定义比productiontestdatabase.yml更多的数据库连接,例如除此之外:users_db_development

users_db_development:
  host: 192.168.1.2
  ...

然后在您的模型(类)中执行:

class User < ActiveRecord::Base
  establish_connection "users_db_#{Rails.env}"
end

这至少在Rails 3中起作用,也应该在4中工作。

答案 1 :(得分:0)

我也很想了解这个

您需要查看名为MultiTenancy - Wikipedia

的内容