ruby-on-rails - 在与标准 "production"或 "development"不同的数据库上使用 Rails 迁移

标签 ruby-on-rails ruby database migration

我有一个正在运行的 Rails 项目,它在 config/database.yml 中定义了标准生产:、:开发和:测试数据库连接

另外我有一个 quiz_development: 和 quiz_production: 定义指向不同的主机/数据库/用户/密码

我现在的目标是定义一个使用“quiz_#{RAILS_ENV}`”作为其数据库配置的迁移。

我尝试过(但失败了):

  • 在迁移文件中设置 ActiveRecord::Base.connection
  • 更改 rails 中的 db:migrate 任务以在那里设置 ActiveRecord::Base.connection

问题:

如何让 rake db:migrate 使用其他数据库定义?

谢谢, 弗兰克

最佳答案

有一个更简单的答案。将此添加到您的迁移中:

def connection
  ActiveRecord::Base.establish_connection("quiz_#{Rails.env}").connection
end

这是针对 Rails 3.1 的。对于 Rails 2.X 或 3.0,它是一个类函数(例如 def self.connection)

关于ruby-on-rails - 在与标准 "production"或 "development"不同的数据库上使用 Rails 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1404620/

相关文章:

ruby-on-rails - rails : How to display results with Yaml in console

ruby - 将 elasticsearch 2.x 转储到 mongodb 并返回到 ES 6.x

sql - 使用子查询提高 UPDATE 查询的性能

mysql - "shuffle"数据库记录表的最佳方法是什么?

ruby-on-rails - 如何让故事与 Restful 身份验证和 cucumber 一起工作?

ruby-on-rails - RoR Heroku 的 Chef Recipe

mysql - 无法在 Rails 上运行数据库迁移

android - 数据库锁定问题android

ruby-on-rails - 如何使用 PostgreSQL 强制 ActiveRecord 中的主键从特定整数值开始跳转?

ruby - 即使将命令作为登录 shell 运行,RVM 也不是一个函数