Tôi đã cố thêm cột vào bảng sau một cột cụ thể trong bảng. Dưới đây là những gì tôi đã làm:ruby trên đường ray thêm cột sau tên cột cụ thể
rails generate migration add_reaction_id_to_patient_allergies reaction_id: integer :after => 'patient_id'
Đây là những gì tập tin chuyển đổi của tôi trông giống như:
class AddReactionIdToPatientAllergies < ActiveRecord::Migration
def change
add_column :patient_allergies, :reaction_id, :string
add_column :patient_allergies, :integer, :string
add_column :patient_allergies, :, :after
add_column :patient_allergies, :=, :string
end
end
Tôi không nghĩ rằng các lệnh diễn ra tốt đẹp. Tôi thấy một '=' trong tập tin trên. Tôi không nghĩ nó nên ở đó. Ai đó có thể cho tôi biết nếu tôi bỏ lỡ bất cứ điều gì?
Nếu có, làm cách nào để hoàn tác các bước trên?
@michael Chỉ cần thêm một điều nữa vào câu trả lời tuyệt vời này, để hoàn tác quá trình di chuyển thành công nhưng không mong muốn, bạn có thể làm rake db: rollback - điều này đảo ngược quá trình di chuyển gần đây nhất. Bạn có thể lùi lại bằng cách lặp lại nó. Tôi thường thấy mình hoàn tác để thực hiện các chỉnh sửa nhỏ, chẳng hạn như đặt giá trị mặc định hoặc thứ tự cột – Polsonby
Tùy chọn ': after' không được bao gồm trong [tài liệu API] (http://api.rubyonrails.org/classes /ActiveRecord/Migration.html), ít nhất là cho Rails 4.2.3. Phát hiện sau khi thử: quá trình di chuyển đã ổn nhưng lệnh không được áp dụng. – nandinga
@nandinga Dường như lớp [ColumnDefinition] (https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb#L13) trong Rails mới nhất vẫn hỗ trợ tùy chọn 'after', mặc dù tôi chưa thử nghiệm điều này trong vài bản phát hành cuối cùng của Rails. – piersadrian