2011-02-08 37 views
6

Những gì gotchas sẽ được tham gia bằng cách sử dụng rake db:migrate để tải vani SQL?Sử dụng rake db: di chuyển thẳng, vani SQL

Yêu cầu kinh doanh mà tôi đang làm việc không cho phép tôi sử dụng di chuyển Rails mặc định. Nhưng tôi vẫn cần phải theo dõi những thay đổi, dễ dàng thay đổi cơ sở dữ liệu DDL, và những thứ khác mà Rails 'cung cấp cho bạn.

Vì vậy, một tập tin chuyển đổi sẽ như thế nào:

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 

Trả lời

17

Đó là hoàn toàn chấp nhận và không có gotchas, miễn là bạn cảm thấy tự tin rằng bạn lên và chức năng xuống phản ánh lẫn nhau. Tôi khuyên bạn nên làm như sau để dễ đọc:

 
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

Bạn có thể sử dụng phương thức di chuyển Rails trong dự án không đường ray bằng cách sử dụng standalone-migrations gem.

Sau khi cài đặt đá quý bạn thêm dòng sau vào Rakefile của bạn để cho phép rake db:* nhiệm vụ:

require 'standalone_migrations' 
StandaloneMigrations::Tasks.load_tasks 

Sau đó bạn chỉ cần thiết lập sự di cư của bạn như bạn vẫn thường làm:

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

    def self.down 
    remove_columm :posts, :date 
    end 
end 
Các vấn đề liên quan