레일에서 모델 제거 (“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 model내 rails 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.