2011-02-08 12 views
6

Jakie problemy wiązałoby się z użyciem rake db:migrate do załadowania wanilii SQL?Używanie prowizji db: migracja prosta, wanilia SQL

Wymagania biznesowe, z którymi współpracuję, nie pozwalają mi na użycie domyślnych migracji Railsów. Nadal jednak muszę śledzić zmiany, łatwo zmieniać bazę danych DDL i inne rzeczy, które daje migracja Railsów.

Więc plik migracja będzie wyglądać następująco:

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 

Odpowiedz

17

to całkowicie dopuszczalne i nie ma żadnych pułapek, tak długo, jak można mieć pewność, że się i funkcjonuje w dół lustro siebie. Proponuję następujący sposób dla czytelności:

 
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

Można użyć Rails metod migracji w projekcie non-szyn za pomocą standalone-migrations gem.

Po zainstalowaniu gem dodać następujące linie do swojego Rakefile włączyć rake db:* zadania:

require 'standalone_migrations' 
StandaloneMigrations::Tasks.load_tasks 

po tym, trzeba po prostu skonfigurować swoje migracje jako normalnie można zrobić:

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

    def self.down 
    remove_columm :posts, :date 
    end 
end 
Powiązane problemy