레일에서 모델 제거 (“rails g model Title…”의 반대)


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

이 모델을 어떻게 완전히 제거 할 수 있습니까? 감사


5
아래 Mikhail의 상위 답변은 마지막 마이그레이션에서 생성 된 모델에 적용됩니다. 한동안 주변에 있었던 모델과 테이블을 제거하려는 사람들은 이 스레드 에서 수행 할 작업을 정확하게 설명합니다.
Ninjakannon 2014 년

답변:


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

모델을 생성하면 데이터베이스 마이그레이션이 생성됩니다. 해당 모델에서 'destroy'를 실행하면 마이그레이션 파일이 삭제되지만 데이터베이스 테이블은 삭제되지 않습니다. 그래서 실행하기 전에

bundle exec rake db:rollback

:( 첫 번째 줄을 읽고 그랬습니다. 제 잘못 이었지만 올바르게 정렬 된 답변이 도움이되었을 수 있습니다.
Mike T

4
개발이고 데이터 손실을 두려워하지 않는다면 실행할 수 있습니다 bundle exec rake db:drop db:create db:migrate. 비어있는 새 데이터베이스가됩니다.
Mikhail Nikalyukin 2013

네 감사합니다. 나는 휴지통에서 마이그레이션을 회복하지만 나는 당신이 제안 무엇을 할거야 너무 너무 다른없는 마이그레이션을했다 밝혀
마이크 T

6
@MikeT 뭐야? 휴지통에서 이전을 복원 했습니까? VCS를 사용하지 않습니까? o_O 당연히해야합니다!
plunntic iam

나를 위해 일했지만, 또한 route.rb로 이동하여 "devise_for : MODEL"을 삭제해야했습니다
cormacncheese

54

이 시도

rails destroy model Rating

모델, 마이그레이션, 테스트 및 고정 장치를 제거합니다.


5
모두 제거하지만 다운 그레이드 마이그레이션 등을 생성하지는 않습니다.
Mr. The

28

향후 질문자 : 콘솔에서 테이블을 삭제할 수없는 경우 테이블을 삭제하는 마이그레이션을 만들어보십시오. 마이그레이션을 만든 다음 다음과 같이 삭제할 파일 메모 테이블에 있어야합니다.

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

  def down
    raise ActiveRecord::IrreversibleMigration
  end
end

훌륭한 대답은 카피 스트라 노 배치로 예상대로 작동합니다.
LessQuesar

18
  1. 마이그레이션을 제거하려면 (이미 마이그레이션을 마이그레이션 한 경우)

    rake db:migrate:down VERSION="20130417185845" #Your migration version
  2. 모델을 제거하려면

    rails d model name  #name => Your model name

rails d modelrails g model.
Komsun K.

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오류가 발생합니다.


이것은 유용한 대답이지만 명령이 작동하지 않습니다. 나는 사용했다 : bundle exec rails 마이그레이션 DropEpisodes 생성 그리고 아래의 모델 삭제 코드도 사용합니다.
Andrew Spode
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.