2011-01-07 28 views
8

Tôi khá mới đối với Ruby on Rails và tôi đã tự hỏi liệu có cách nào để chỉnh sửa lược đồ cơ sở dữ liệu cho một mô hình hay không.Chỉnh sửa mô hình đường ray từ dòng lệnh

Ví dụ, tôi có mô hình thuê bao trong ứng dụng của tôi - cách tôi tạo ra nó là bằng cách sử dụng rails generate scaffold Subscriber email:string

Nhưng bây giờ, tôi muốn có một tên trong mô hình thuê bao là tốt. Có cách nào dễ dàng để làm điều này? Tôi đã đặt rất nhiều mã trong bộ điều khiển và chế độ xem hiện tại của mình, vì vậy tôi không nhất thiết muốn phá hủy giàn giáo, nhưng tôi muốn chỉnh sửa mô hình.

Cảm ơn trước,

hwrd

T.B. Tôi đang sử dụng Ruby on Rails 3

+1

Reading http: //guides.rubyonrails .org/active_record_migrations.html phải rất hữu ích. – Hong

Trả lời

12

Mô hình ActiveRecord kiểm tra bảng mà nó đại diện. Bạn không thực sự cần phải thay đổi mô hình của bạn chỉ để thêm một lĩnh vực mới (trừ khi bạn muốn thêm xác nhận, vv).

Những gì bạn muốn làm là làm cho một sự chuyển đổi mới và sau đó di chuyển cơ sở dữ liệu của bạn lên:

rails g migration AddNameToSubscribers name:string 
rake db:migrate 

Sau đó, bạn có thể bắt đầu tham khảo các trường tên trong bộ điều khiển và quan điểm của bạn.

(lệnh máy phát điện này có vẻ một chút huyền diệu, nhưng các máy phát điện đường ray nhận định dạng này và sẽ tạo ra thích hợp add_columnremove_column đang Xem Rails migration guide để đọc thêm..)

+1

Nhưng các cột cũ trong DB vẫn chiếm không gian? Mặc dù vậy, tôi đã không nhìn nó theo cách này. Đó là một điểm hay. – hwrdprkns

+0

@hwrdprkns: Vâng, chúng vẫn chiếm không gian. Tôi không chắc bạn đang hỏi gì. Lệnh này sẽ thêm trường 'name' vào bảng' người đăng ký' của bạn. Đó không phải là những gì bạn muốn? –

+1

Các cột cũ chưa bị xóa, do đó chúng vẫn chiếm dung lượng. Việc di chuyển ở trên chỉ thêm cột vào bảng người đăng ký, đó là tất cả. – Zabba

2

Nếu bạn muốn thay đổi giản đồ cơ sở dữ liệu của mô hình, bạn sẽ muốn sử dụng di chuyển.

Bạn sẽ làm những việc như

add_column :city, :string 
remove_column :boo 

http://guides.rubyonrails.org/migrations.html

Nếu bạn chỉ có nghĩa là việc tìm kiếm các mô hình và cập nhật các dữ liệu bên trong mỗi trường hợp, đi với câu trả lời @ apneadiving của.

+0

Cảm ơn bạn đã trả lời nhanh chóng. Tôi có nghĩa là thay đổi lược đồ cơ sở dữ liệu - xin lỗi tôi đã không làm cho rõ ràng. Sau lệnh này, lược đồ của tôi có được cập nhật tốt không? Ngoài ra, chỉ là một lưu ý phụ - không remove_column cũng bash bất kỳ/tất cả dữ liệu trong cột cho mô hình đó? – hwrdprkns

+0

@hwrdprkns, khi một cột được xóa khỏi bảng, tất cả dữ liệu bị mất. Và những gì @Jesse Wolgamott đang nói về cơ bản giống như những gì @Josh Lindsey đã nói .. – Zabba

+0

Xin lỗi tôi đã bình chọn điều này, tôi không có ý! Nếu bạn chỉnh sửa câu trả lời của mình, tôi sẽ bỏ phiếu đó lại! – hwrdprkns

Các vấn đề liên quan