在 ShowNearby,我们一直在进行从 PHP 到 RoR 3.1 的非常大的迁移,我们面临着几个问题,您可能已经解决了这些问题。
我们有大量数据,我们决定将我们的数据库分成几个我们可以单独处理的数据库。比如我们的账号、地点、日志等被拆分到几个数据库中
我们需要迁移、固定装置、模型,才能很好地发挥作用,到目前为止,一切都非常困惑。我们对可接受的解决方案的一些要求:
- 一个模型应该与其中一个数据库中的一个表相关。
- rake db:drop - 应该删除我们在 database.yml 中指定的所有数据库环境
- rake db:create - 应该创建我们在 database.yml 中指定的所有数据库环境
- rake db:migrate - 应该运行迁移到各种数据库
- rake db:test - 应该抓取固定装置并将它们放入各种数据库和测试单元/功能/等
我们正在考虑为每个数据库设置单独的 rails 项目并将它们与 ActiveResource 连接,但我们认为这不是很有效。你们中有人曾经处理过类似的问题吗?
最佳答案
对于 Wukerplank 的回答,您还可以像往常一样将连接详细信息放在 database.yml 中,名称如下:
log_database_production:
adapter: mysql
host: other_host
username: logmein
password: supersecret
database: logs
然后在你的特殊模型中:
class AccessLog < ActiveRecord::Base
establish_connection "log_database_#{Rails.env}".to_sym
end
防止那些讨厌的凭据出现在您的应用程序代码中。
编辑:如果你想在多个模型中重用这个连接,你应该创建一个新的抽象类并继承它,因为连接与类紧密耦合(如 here 、 here 和here ),并且将为每个类创建新的连接。
如果是这种情况,请像这样设置:
class LogDatabase < ActiveRecord::Base
self.abstract_class = true
establish_connection "log_database_#{Rails.env}".to_sym
end
class AccessLog < LogDatabase
end
class CheckoutLog < LogDatabase
end
关于ruby-on-rails - 连接 Rails 3.1 与多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6122508/