Removendo um modelo em trilhos (verso de "rails g model Title ...")

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

Como posso remover completamente este modelo? obrigado

Colbern
fonte
5
A principal resposta de Mikhail abaixo se aplica a um modelo criado na última migração. Para aqueles que desejam remover um modelo e sua mesa que já existe há algum tempo, este tópico descreve exatamente o que fazer.
Ninjakannon

Respostas:

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

Quando você gera um modelo, ele cria uma migração de banco de dados. Se você executar 'destroy' nesse modelo, ele excluirá o arquivo de migração, mas não a tabela do banco de dados. Então antes de correr

bundle exec rake db:rollback
Mikhail Nikalyukin
fonte
:( Leia a primeira linha e pronto. A culpa foi minha, mas uma resposta ordenada corretamente pode ter ajudado.
Mike T
4
se for desenvolvimento e você não tiver medo de perder seus dados, você pode executar bundle exec rake db:drop db:create db:migrate. Será um novo banco de dados vazio.
Mikhail Nikalyukin
Sim, obrigado. Restaurei a migração do Lixo, mas descobri que também faltava outra migração, então farei o que você sugere
Mike T
6
@MikeT Você o quê? Restaurou a migração do lixo? Você não usa nenhum VCS? o_O Você absolutamente deveria!
Iam Plunntic
Funcionou para mim, mas eu também tive que entrar em routes.rb e deletar "devise_for: MODEL"
cormacncheese
54

Tente isto

rails destroy model Rating

Irá remover modelo, migração, testes e acessórios

fl00r
fonte
5
Ele remove tudo, mas não cria uma migração de downgrade ou algo assim.
Sr.
28

Para futuros questionadores: Se você não pode eliminar as tabelas do console, tente criar uma migração que elimine as tabelas para você. Você deve criar uma migração e, em seguida, nas tabelas de notas de arquivo que deseja eliminar assim:

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

  def down
    raise ActiveRecord::IrreversibleMigration
  end
end
Jenny Lang
fonte
Ótima resposta, vai se comportar como esperado com um implante de capistrano.
LessQuesar de
18
  1. Para remover a migração (se você já migrou a migração)

    rake db:migrate:down VERSION="20130417185845" #Your migration version
  2. Para remover o modelo

    rails d model name  #name => Your model name
Govind Shaw
fonte
rails d modelé o que procuro reverter meu rails g model.
Komsun K.
3

Aqui está uma implementação diferente da resposta de Jenny Lang que funciona para Rails 5.

Primeiro crie o arquivo de migração:

bundle exec be rails g migration DropEpisodes

Em seguida, preencha o arquivo de migração da seguinte maneira:

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

Correr rails db:migratederrubará a mesa. Se você executar rails db:rollback, o Rails irá gerar um ActiveRecord::IrreversibleMigrationerro.

Poderes
fonte
Esta é uma resposta útil - mas o comando não funciona para mim. Eu usei: bundle exec rails generate migration DropEpisodes E então eu também usaria o código de exclusão de modelo abaixo também.
Andrew Spode