2011-08-18 30 views
6

Tôi có bảng mà tôi đã tạo bằng cách sử dụng di chuyển, bây giờ tôi muốn loại bỏ bảng này. Tôi khá chắc chắn rằng tôi chỉ có thể quay trở lại di chuyển đó, nhưng tôi không thể tìm thấy cú pháp để làm điều đó. Tôi đã tìm thấy câu hỏi này khi tìm kiếm Rails DB Migration - How To Drop a Table?Rails 3: Thả bảng bằng cách di chuyển

nhưng về cơ bản, bạn có thể tìm thấy những gì bạn cần và cung cấp liên kết. Tôi đã đọc liên kết đó và tôi không thấy bất cứ điều gì nói về cách thực hiện nó. Tôi đã thấy những phần của nó, nhưng tôi không biết làm thế nào để đặt chúng lại với nhau.

Tôi thấy trong quá trình di chuyển, nó có phương thức tự thực hiện, tôi thực sự chỉ cần biết cách gọi điều đó.

Trả lời

8

Bạn có thể rollback di chuyển gần nhất với:

rake db:rollback

Điều đó sẽ chạy các phương pháp self.down, mà nên drop_table :table_name

+0

gì nếu đó là một di cư Tôi chạy vào tháng trước và tôi đã thực hiện một bó nhiều hơn kể từ đó? – Jhorra

+0

@jhorra ... Tôi tin rằng bạn nên viết một tệp di chuyển mới có 'drop_table: table_name' trong phương thức' up' và 'create_table: table_name' trong phương thức' down' trong trường hợp đó và chạy di chuyển. Bằng cách này, bất kỳ người nào khác sử dụng cùng một dự án sẽ nhận được bảng giảm xuống, khi anh ta sử dụng 'rake db: migrate' – rubyprince

+0

Ok, tôi sẽ đi tuyến di chuyển mới – Jhorra

3
rake db:rollback STEP=n 

trong đó n là số bước bạn cần quay lại. Nếu bạn rời khỏi BƯỚC tắt nó chỉ cuộn lại 1.

Để di chuyển đến một phiên bản đặc biệt, sử dụng:

rake db:migrate:down VERSION=20080906120000 

Nếu bạn muốn nhanh chóng áp dụng một thả bảng, bạn có thể tạo ra một sự chuyển đổi mới, hãy chạy nó, sau đó xóa nó cùng với di chuyển ban đầu bạn không muốn nữa. Cú pháp để xóa một bảng là:

drop_table :table_name 
17

Cố gắng tạo di chuyển và sử dụng trống:

drop_table :table_name 
-11

Bạn có thể loại bỏ một bảng sử dụng cào để tiêu diệt các mô hình:

rails destroy model your_model 
+3

Mô hình Rails không phải là một bảng, cũng không phải bất kỳ phần nào khác của kho dữ liệu. Trong khi chỉ huy 'tạo ra mô hình Foo' tạo ra một sự chuyển đổi cơ sở dữ liệu tương ứng để tạo một bảng để lưu trữ các cá thể của Foo, việc chỉ huy' phá hủy mô hình Foo' không phá hủy bảng. Như http://railsforum.com/viewtopic.php?pid=10961#p10961 nói: "Hãy cẩn thận, mặc dù - khi bạn tạo một mô hình, nó tạo ra một di chuyển cơ sở dữ liệu. Nếu bạn chạy 'hủy' trên mô hình đó, nó sẽ xóa tệp di chuyển, nhưng không phải bảng cơ sở dữ liệu. ... " –

0

Phá hoại các mô hình không phải là cách tốt nhất.

Thay vào đó, hãy chạy lệnh này trong đường ray giao diện điều khiển của bạn: rake db:rollback

(để truy cập đường ray console, gõ rails c trong một thiết bị đầu cuối như here)

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