2011-02-08 15 views
6

¿Qué problemas implicaría el uso de rake db:migrate para cargar el SQL vainilla?Usando rake db: migrar directamente, vainilla SQL

Los requisitos comerciales con los que estoy trabajando no me permiten usar las migraciones predeterminadas de Rails. Pero aún necesito hacer un seguimiento de los cambios, modificar fácilmente la base de datos DDL y las demás cosas que le proporcionan las migraciones de Rails.

Así que un archivo de migración se vería así:

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 

Respuesta

17

Eso es perfectamente aceptable y no hay trampas, siempre y cuando usted se sienta seguro de que su hacia arriba y hacia abajo funciones se reflejan entre sí. Yo sugeriría hacer lo siguiente para facilitar la lectura:

 
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 
0

Puede utilizar los rieles métodos de migración en un proyecto no raíles mediante el uso de la standalone-migrations gem.

Después de instalar la gema de agregar las siguientes líneas a su Rakefile para permitir rake db:* tareas:

require 'standalone_migrations' 
StandaloneMigrations::Tasks.load_tasks 

Después de que sólo tiene que configurar sus migraciones como normalmente lo haría:

class AddDateToPost < ActiveRecord::Migration 
    def self.up 
    add_columm :posts, :date, :datetime, default: nil 
    end 

    def self.down 
    remove_columm :posts, :date 
    end 
end 
Cuestiones relacionadas