2011-02-08 12 views
6

rake db:migrateを使用してバニラSQLをロードすると、どのような問題が発生しますか?rake db:migrateストレート、バニラ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 

答えて

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 
0

あなたはstandalone-migrations gemを使用することにより、非レールプロジェクトでRailsの移行方法を使用することができます。私は、読みやすくするために以下を実行することを示唆しています。

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

    def self.down 
    remove_columm :posts, :date 
    end 
end 
:そのあなた単にセットアップあなたが通常行うように、あなたの移行をした後

require 'standalone_migrations' 
StandaloneMigrations::Tasks.load_tasks 

あなたRakefileに次の行を追加し、宝石をインストールした後rake db:*タスクを有効にします

関連する問題