web-dev-qa-db-ja.com

Railsのモデルの削除(「Rails gモデルタイトル...」の逆)

Rails g model Rating user_id:integer message:string value:integer

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

108
Colbern
bundle exec rake db:rollback    
Rails destroy model <model_name>

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

bundle exec rake db:rollback
184

これを試して

Rails destroy model Rating

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

47
fl00r

将来の質問者向け:コンソールからテーブルを削除できない場合は、テーブルを削除する移行を作成してみてください。移行を作成してから、ファイルに次のようにドロップしたいテーブルを記録する必要があります。

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

  def down
    raise ActiveRecord::IrreversibleMigration
  end
end
28
Jenny Lang
  1. 移行を削除するには(既に移行を移行している場合)

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

    Rails d model name  #name => Your model name
    
16
Govind shaw

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エラーをスローします。

2
Powers