Raylardaki bir modeli kaldırma ("raylar g model Başlığı…" nın tersi)


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

Bu modeli nasıl tamamen kaldırabilirim? Teşekkürler


5
Mikhail'in aşağıdaki en iyi yanıtı, son geçişte oluşturulan bir model için geçerlidir. Bir süredir ortalıkta dolaşan bir modeli ve tablosunu kaldırmak isteyenler, bu konu tam olarak ne yapacağını anlatıyor.
Ninjakannon

Yanıtlar:


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

Bir model oluşturduğunuzda, bir veritabanı geçişi oluşturur. Bu model üzerinde 'yok et' komutunu çalıştırırsanız, geçiş dosyası silinir, ancak veritabanı tablosu silinmez. Yani koşmadan önce

bundle exec rake db:rollback

:( İlk satırı oku ve yaptım. Bu benim hatamdı, ancak doğru sıralanan bir cevap yardımcı olmuş olabilir.
Mike T

4
Geliştirme ise ve verilerinizi kaybetmekten korkmuyorsanız, çalıştırabilirsiniz bundle exec rake db:drop db:create db:migrate. Yeni, boş bir veritabanı olacak.
Mikhail Nikalyukin

Evet teşekkürler. Çöp Kutusu'ndan taşıma işlemini geri yükledim ancak başka bir eksik taşıma işlemim olduğu ortaya çıktı, bu yüzden önerdiğin şeyi yapacağım
Mike T

6
@MikeT Ne yapıyorsun? Çöp kutusundan geçişi geri mi yüklediniz? Herhangi bir VCS kullanmıyor musunuz? o_O Kesinlikle yapmalısınız!
plunntic iam

Benim için çalıştı, ama aynı zamanda rotalara girmem ve "devise_for: MODEL" i
silmem gerekiyordu

54

Bunu dene

rails destroy model Rating

Modeli, geçişi, testleri ve fikstürleri kaldıracak


5
Her şeyi kaldırır, ancak indirgeme geçişi veya başka bir şey yaratmaz.
bay.

28

Gelecekteki soru soranlar için: Tabloları konsoldan bırakamazsanız, tabloları sizin için bırakan bir geçiş oluşturmaya çalışın. Bir geçiş oluşturmalı ve ardından dosya notu tablolarında şu şekilde bırakılmasını sağlamalısınız:

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

  def down
    raise ActiveRecord::IrreversibleMigration
  end
end

Harika cevap, bir kapistrano konuşlandırmasıyla beklendiği gibi davranacak.
LessQuesar

18
  1. Taşımayı kaldırmak için (taşımayı zaten geçirdiyseniz)

    rake db:migrate:down VERSION="20130417185845" #Your migration version
  2. Modeli kaldırmak için

    rails d model name  #name => Your model name

rails d modelbenim aradığım şey rails g model.
Komsun K.

3

İşte Jenny Lang'ın Rails 5 için çalışan cevabının farklı bir uygulaması.

Önce taşıma dosyasını oluşturun:

bundle exec be rails g migration DropEpisodes

Ardından, taşıma dosyasını aşağıdaki gibi doldurun:

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

Koşmak rails db:migratemasayı düşürür. Çalıştırırsanız rails db:rollback, Rails bir ActiveRecord::IrreversibleMigrationhata atar .


Bu yararlı bir cevap - ancak komut benim için çalışmıyor. Kullandım: bundle exec rails migration DropEpisodes oluşturur Ve sonra aşağıdaki model silme kodunu da kullanırdım.
Andrew Spode
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.