使用rake db:直接迁移,vanilla SQL

vri*_*h88 6 rake ruby-on-rails rails-migrations

使用rake db:migrate加载vanilla SQL 会涉及到什么问题?

我正在使用的业务要求不允许我使用默认的Rails迁移.但我仍然需要跟踪更改,轻松更改数据库DDL以及Rails迁移为您提供的其他内容.

所以迁移文件看起来像:

class AddDateToPost < ActiveRecord::Migration
  def self.up
    ActiveRecord::Base.connection.execute("ALTER TABLE `posts` ADD COLUMN date DATETIME NULL")
  end

  def self.down
    ActiveRecord::Base.connection.execute("ALTER TABLE `posts` DROP COLUMN date")
  end
end
Run Code Online (Sandbox Code Playgroud)

Pan*_*kos 17

这是完全可以接受的,没有陷阱,只要你确信你的上下功能相互映射.为了便于阅读,我建议您执行以下操作:

class AddDateToPost < ActiveRecord::Migration
  def self.up
    execute "ALTER TABLE `posts` ADD COLUMN date DATETIME NULL"
  end

  def self.down
    execute "ALTER TABLE `posts` DROP COLUMN date"
  end
end