[ruby-on-rails] 레일에서 단일 테이블을 재설정하는 방법은 무엇입니까?
기본 키 값이 1부터 다시 시작되기를 원합니다.
답변
SQLite에서 인덱스 / 기본 키를 재설정하려면 다음을 입력하십시오.
$ rails console
> ActiveRecord::Base.connection.execute("DELETE from sqlite_sequence where name = 'yourtablename'")
답변
저와 같은 많은 사람들이 테이블의 모든 데이터를 삭제하는 방법을 찾기 위해 여기에 왔습니다. 여기 있습니다 :
$ rails console
> ModelName.delete_all
또는
> ModelName.destroy_all
destroy_all은 종속성 및 콜백을 확인하고 시간이 조금 더 걸립니다. delete_all은 직접적인 SQL 쿼리입니다.
자세한 정보 : http://apidock.com/rails/ActiveRecord/Base/delete_all/class
답변
Rails 콘솔에서 다음을 사용하여 테이블의 모든 항목을 삭제 한 다음 인덱스 카운터 (Ruby 2 및 Rails 4)를 재설정했습니다.
> ModelName.delete_all
> ActiveRecord::Base.connection.reset_pk_sequence!('plural_model_name')
답변
@khelll의 링크가 도움이됩니다. 하나의 테이블을 자르려는 명령은 다음과 같습니다.
ActiveRecord::Base.connection.execute("TRUNCATE #{table_name}")
답변
Rails 4.2부터 ActiveRecord 연결truncate
에서 직접 사용할 수 있습니다 .
ActiveRecord::Base.connection.truncate(:table_name)
이 모든 데이터를 쳐 하고 자동 증가 카운터를 재설정 표에. MySQL 및 Postgres에서 작동하며 Sqlite 에서는 작동 하지 않습니다 .
답변
gem 'database_cleaner'
Gemfile에 추가 하고을 실행 $ bundle install
한 후 다음을 수행하십시오.
> DatabaseCleaner.clean_with(:truncation, :only => ['yourtablename'])
더 많은 테이블을 지정할 수 있습니다.
> DatabaseCleaner.clean_with(:truncation, :only => ['table1', 'table2', 'table3'])
마지막 매개 변수를 그대로두면 전체 데이터베이스가 잘립니다.
> DatabaseCleaner.clean_with(:truncation) # your database is truncated
답변
Rails 4.2.0 및 Sqlite3를 사용하고 있습니다.
저에게 도움이 된 것은 다음과 같습니다 (위의 모든 것에서 약간 가져옴).
$ rails c
> ModelName.delete_all
> ActiveRecord::Base.connection.execute("DELETE from sqlite_sequence where name = 'table_name'")
그런 다음 인덱스가 1부터 시작하여 테이블에 새 레코드를 추가 할 수있었습니다.