Làm cách nào để bạn sửa đổi mô hình mà bạn đã tạo bằng cách sử dụng mô hình? Ví dụ, mô hình myModel ban đầu có các cột a, b và c, nhưng bây giờ tôi muốn thêm cột d.Đường ray: Sửa đổi mô hình được tạo bởi giàn giáo
Trả lời
Rails 3 trở lên sử dụng đoạn mã sau:
rails generate migration add_fieldname_id_to_tablename fieldname:string
Rails 2
ruby script/generate migration add_fieldname_to_tablename fieldname:string
này không còn hoạt động và trả về lỗi sau đây trong Rails 3:
ruby: Không có tệp hoặc thư mục nào - tập lệnh/tạo (LoadError)
Câu trả lời tốt nhất mà tôi đã tìm thấy cho đến nay được điều hành này từ gốc dự án của bạn:
ruby script/generate migration add_d_column_to_myModel
Sau đó chỉnh sửa các tập tin di cư mới nằm trong db/chuyển đổi sang giống như thế:
def self.up
add_column :myModel, :d, :string
end
def self.down
remove_column :myModel, :d
end
Bước cuối cùng sẽ là cập nhật lượt xem của bạn cho phù hợp.
trả lời tìm thấy here
chức năng Bảng tìm thấy here
Bối rối - tại sao bạn đặt câu hỏi nếu bạn có câu trả lời hay? Tại sao không đăng bài này trong câu hỏi ban đầu và yêu cầu các giải pháp tốt hơn? – zenazn
Tôi nghĩ rằng bạn đã trả lời câu hỏi của riêng bạn. Tuy nhiên, một điều tôi sẽ nói là trong một số trường hợp, bạn có thể chỉnh sửa trực tiếp di chuyển mô hình. Di chuyển là tuyệt vời khi bạn có một trang web trong sản xuất, nhưng để phát triển liên tục, bạn thường có sự sang trọng của thổi đi DB và bắt đầu lại. –
Tôi trả lời câu hỏi của riêng mình vì 2 lý do. Đầu tiên, đây là câu trả lời hay nhất tôi tìm thấy, nhưng tôi mới làm quen với Rails và nghĩ rằng có thể có một cách tốt hơn tôi không tìm thấy. Thứ hai, câu hỏi đã không được đăng trên StackOverflow, vì vậy tôi quyết định thêm nó. –
ruby script/generate migration add_fieldname_to_tablename fieldname:string
này là phương pháp phím tắt để thực hiện chính xác những gì bạn muốn. nếu bạn cần kiểm soát nhiều hơn, hoặc nếu bạn có nhiều cột để thêm, câu trả lời của Andrew H cũng sẽ hoạt động tốt.
cũng sẽ cập nhật lượt xem này không? – femi
Không, nó sẽ không cập nhật các chế độ xem. – cynicalman
Đây từng là câu trả lời được chấp nhận nhưng tôi đã thay đổi nó do ghi chú trong phản hồi của NeoNMD về câu trả lời này. –
Cảm ơn, sẽ là tốt đẹp để tấn công sự kết hợp không làm việc, mặc dù, nó gây nhầm lẫn một chút ... Hoặc có thể làm cho một số loại tiêu đề (Rails <= 2, Rails > = 3 ví dụ). – Wiseman
Cảm ơn Wiseman, chỉ cần chỉnh sửa để tính đến điều đó, có tốt hơn không? – BookOfGreg
Có, hoàn hảo, cảm ơn :) – Wiseman