Mặc dù câu trả lời được chấp nhận là tuyệt vời, tôi muốn thêm một câu trả lời ở đây hy vọng sẽ giải quyết tốt hơn câu hỏi áp phích gốc phần 2, cho những người không phải là chuyên gia như tôi.
- Làm cách nào để tạo sự di chuyển để thay thế loại cột đó
tạo ra sự di chuyển đoạn đầu
Bạn có thể tạo một sự di chuyển để giữ thay đổi của mình bằng cách nhập vào bảng điều khiển (chỉ cần thay thế table
cho tên bảng của bạn và column
cho tên cột của bạn)
rails generate migration change_table_column
Thao tác này sẽ tạo ra sự di chuyển khung bên trong thư mục ứng dụng Rails / db / migrate / của bạn. Di chuyển này là một trình giữ chỗ cho mã di chuyển của bạn.
Ví dụ: tôi muốn tạo một sự di chuyển để thay đổi loại cột từ string
thành text
, trong bảng có tên TodoItems:
class ChangeTodoItemsDescription < ActiveRecord::Migration
def change
# enter code here
change_column :todo_items, :description, :text
end
end
Chạy quá trình di chuyển của bạn
Khi bạn đã nhập mã để thay đổi cột vừa chạy:
rake db:migrate
Để áp dụng việc di chuyển của bạn. Nếu bạn mắc lỗi, bạn luôn có thể hoàn nguyên thay đổi bằng:
rake db:rollack
Phương pháp lên và xuống
Các tham chiếu Up
và Down
phương pháp câu trả lời được chấp nhận , thay vì Change
phương pháp mới hơn . Vì rails 3.2 kiểu cũ Phương pháp Lên và Xuống có một số ưu điểm so với phương pháp Thay đổi mới hơn. 'Lên và Xuống' tránh ActiveRecord::IrreversibleMigration exception
. Kể từ khi phát hành Rails 4, bạn có thể sử dụng reversible
để tránh lỗi này:
class ChangeProductsPrice < ActiveRecord::Migration
def change
reversible do |dir|
change_table :products do |t|
dir.up { t.change :price, :string }
dir.down { t.change :price, :integer }
end
end
end
end
Thưởng thức Rails :)