Xóa mô hình trong đường ray (đảo ngược mô hình đường ray g


115
rails g model Rating user_id:integer message:string value:integer

Làm thế nào tôi có thể loại bỏ hoàn toàn mô hình này? Cảm ơn


5
Câu trả lời hàng đầu của Mikhail dưới đây áp dụng cho một mô hình được tạo trong lần di chuyển cuối cùng. Những người muốn loại bỏ một mô hình và bảng của nó đã tồn tại được một thời gian, chủ đề này mô tả chính xác những gì cần làm.
Ninjakannon

Câu trả lời:


192
bundle exec rake db:rollback    
rails destroy model <model_name>

Khi bạn tạo một mô hình, nó tạo ra một cơ sở dữ liệu di chuyển. 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 xóa bảng cơ sở dữ liệu. Vì vậy, trước khi chạy

bundle exec rake db:rollback

:( Đọc dòng đầu tiên và thực hiện. Đó là lỗi của tôi, nhưng câu trả lời được sắp xếp chính xác có thể đã giúp ích.
Mike T

4
nếu đó là sự phát triển và bạn không sợ mất dữ liệu, bạn có thể chạy bundle exec rake db:drop db:create db:migrate. Nó sẽ là một cơ sở dữ liệu trống mới.
Mikhail Nikalyukin

Các bạn cảm ơn. Tôi đã khôi phục di chuyển từ Thùng rác nhưng hóa ra tôi cũng có một lần di chuyển bị mất khác vì vậy tôi sẽ thực hiện những gì bạn đề xuất
Mike T

6
@MikeT Bạn là gì? Khôi phục di chuyển từ thùng rác? Bạn không sử dụng bất kỳ VCS? o_O Bạn hoàn toàn nên!
plunntic iam

Làm việc cho tôi, nhưng tôi cũng phải đi vào tuyến đường.rb và xóa "devise_for: MODEL"
cormacncheese

54

Thử cái này

rails destroy model Rating

Nó sẽ loại bỏ mô hình, di chuyển, kiểm tra và đồ đạc


5
Nó loại bỏ tất cả, nhưng nó không tạo ra sự di chuyển xuống cấp hoặc một cái gì đó.
mr.

28

Đối với những người hỏi trong tương lai: Nếu bạn không thể thả các bảng khỏi bảng điều khiển, hãy thử tạo một di chuyển thả các bảng cho bạn. Bạn nên tạo một di chuyển và sau đó trong các bảng ghi chú tệp bạn muốn loại bỏ như thế này:

class DropTables < ActiveRecord::Migration
  def up
    drop_table :table_you_dont_want
  end

  def down
    raise ActiveRecord::IrreversibleMigration
  end
end

Câu trả lời tuyệt vời, sẽ hành xử như mong đợi với một triển khai capistrano.
LessQuesar

18
  1. Để xóa di chuyển (nếu bạn đã di chuyển di chuyển)

    rake db:migrate:down VERSION="20130417185845" #Your migration version
  2. Để loại bỏ mô hình

    rails d model name  #name => Your model name

rails d modellà những gì tôi đang tìm kiếm để đảo ngược của tôi rails g model.
Komsun K.

3

Đây là cách triển khai khác nhau cho câu trả lời của Jenny Lang hoạt động cho Rails 5.

Đầu tiên tạo tệp di chuyển:

bundle exec be rails g migration DropEpisodes

Sau đó, điền vào tệp di chuyển như sau:

class DropEpisodes < ActiveRecord::Migration[5.1]
  def change
    drop_table :episodes
  end
end

Chạy rails db:migratesẽ làm rơi bàn. Nếu bạn chạy rails db:rollback, Rails sẽ đưa ra một ActiveRecord::IrreversibleMigrationlỗi.


Đây là một câu trả lời hữu ích - nhưng lệnh không hoạt động đối với tôi. Tôi đã sử dụng: bundle exec rails tạo di chuyển DropEpisodes Và sau đó tôi cũng sẽ sử dụng mã xóa mô hình bên dưới.
Andrew Spode
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.