レール内のモデルの削除(「rails gモデルタイトル…」の逆)


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

このモデルを完全に削除するにはどうすればよいですか?ありがとう


5
以下のミハイルのトップ回答は、前回の移行で作成されたモデルに適用されます。しばらく使用されているモデルとそのテーブルを削除したい人のために、このスレッドは何をすべきかを正確に説明しています。
Ninjakannon 2014年

回答:


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

モデルを生成すると、データベースの移行が作成されます。そのモデルで「破棄」を実行すると、移行ファイルは削除されますが、データベーステーブルは削除されません。だから実行する前に

bundle exec rake db:rollback

。:(読む最初の行とそれをやったそれは私のせいだったが、正しく順序付け回答は役立っている可能性があります。
マイク・T

4
それが開発であり、データを失うことを恐れない場合は、実行できますbundle exec rake db:drop db:create db:migrate。新しい空のデータベースになります。
ミハイルニカリュキン2013

あなたがたは感謝する。ゴミ箱から移行を復元しましたが、移行がもう1つ不足していることが判明したので、提案したことを実行します
Mike T

6
@MikeTあなたは何ですか?ゴミ箱から移行を復元しましたか?VCSを使用していませんか?o_Oあなた​​は絶対にすべきです!
plunntic iam 2015

私のために働いたが、routes.rbに移動して "devise_for:MODEL"を削除する必要もあった
cormacncheese

54

これを試して

rails destroy model Rating

モデル、移行、テスト、フィクスチャを削除します


5
すべて削除されますが、ダウングレード移行などは作成されません。
Mr.The 2014

28

今後の質問者向け:コンソールからテーブルを削除できない場合は、テーブルを削除する移行を作成してみてください。移行を作成してから、次のように削除したいファイルノートテーブルに追加する必要があります。

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

  def down
    raise ActiveRecord::IrreversibleMigration
  end
end

素晴らしい答えです。capistranoのデプロイで期待どおりに動作します。
LessQuesar

18
  1. 移行を削除するには(既に移行を移行している場合)

    rake db:migrate:down VERSION="20130417185845" #Your migration version
  2. モデルを削除するには

    rails d model name  #name => Your model name

rails d model私は私のを逆転させるために探しているものですrails g model
Komsun K. 2017

3

Rails 5で動作するJenny Langの回答の別の実装を次に示します。

最初に移行ファイルを作成します。

bundle exec be rails g migration DropEpisodes

次に、移行ファイルに次のように入力します。

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

実行rails db:migrateするとテーブルが削除されます。を実行するとrails db:rollback、RailsはActiveRecord::IrreversibleMigrationエラーをスローします。


これは便利な答えです-しかし、コマンドは私には機能しません。私は使用しました:execレールをバンドルして移行DropEpisodesを生成します。次に、以下のモデル削除コードも使用します。
Andrew Spode
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.