테이블이 레일에 있는지 확인합니다.
테이블이 없으면 작동하지 않는 갈퀴 작업이 있습니다.저는 웹사이트에서 20명 이상의 엔지니어들과 함께 작업하고 있기 때문에 그들이 해당 테이블을 채울 레이크 작업을 하기 전에 테이블을 마이그레이션했는지 확인하고 싶습니다.
AR에는 다음과 같은 방법이 있습니까?Table.exists
테이블을 성공적으로 마이그레이션했는지 확인하려면 어떻게 해야 합니까?
Rails 5에서 API는 테이블/뷰, 집합적으로 데이터 소스와 관련하여 명시적이 되었습니다.
# Tables and views
ActiveRecord::Base.connection.data_sources
ActiveRecord::Base.connection.data_source_exists? 'kittens'
# Tables
ActiveRecord::Base.connection.tables
ActiveRecord::Base.connection.table_exists? 'kittens'
# Views
ActiveRecord::Base.connection.views
ActiveRecord::Base.connection.view_exists? 'kittens'
레일 2, 3 및 4에서 API는 테이블에 대한 것입니다.
# Listing of all tables and views
ActiveRecord::Base.connection.tables
# Checks for existence of kittens table/view (Kitten model)
ActiveRecord::Base.connection.table_exists? 'kittens'
마이그레이션 상태 가져오기:
# Tells you all migrations run
ActiveRecord::Migrator.get_all_versions
# Tells you the current schema version
ActiveRecord::Migrator.current_version
마이그레이션 또는 메타데이터에 더 많은 API가 필요한 경우 다음을 참조하십시오.
- 활성 레코드::스키마 마이그레이션
이것은ActiveRecord::Base
을 위한 수업schema_migrations
테이블 - 활성 레코드::마이그레이터
마이그레이션이 실행될 때 모든 작업이 수행되는 위치
테이블이 존재하지 않는 경우에도:
모범을 보이다Kitten
예상표kittens
레일 3:
고양이 테이블이 존재합니까?#=> 거짓
마이그레이션을 통해 테이블을 제거하는 동안 이 정보를 발견했습니다.
drop_table :kittens if (table_exists? :kittens)
ActiveRecord::Migration.drop_table :kittens if (ActiveRecord::Base.connection.table_exists? :kittens)
Rails 3.2에 대한 작업
레일 5에서는 다음과 같은 간단한 형태를 사용할 수 있습니다.
drop_table :kittens, if_exists: true
참조: https://github.com/rails/rails/pull/16366
Rails 5 Active Record의 CHANGELOG는 다음과 같습니다.
drop_table의 :if_exists 옵션을 소개합니다.
예:
drop_table(:posts, if_exists: true)
그러면 다음을 수행할 수 있습니다.
DROP TABLE IF EXISTS posts
테이블이 존재하지 않는 경우 if_exists: false(기본값)는 예외를 발생시키는 반면 if_exists: true는 아무것도 수행하지 않습니다.
레일 5.1
if ActiveRecord::Base.connection.data_source_exists? 'table_name'
drop_table :table_name
end
또는
drop_table :table_name, if_exists: true
이를 위한 올바른 방법은 Model.table_exists입니까?
class Dog < ApplicationRecord
# something
end
do_something if Dog.table_exists?
언급URL : https://stackoverflow.com/questions/6590107/check-if-a-table-exists-in-rails
'programing' 카테고리의 다른 글
Capybara 2.0으로 업그레이드한 후 항목 목록에서 첫 번째 링크를 클릭하는 방법은 무엇입니까? (0) | 2023.05.31 |
---|---|
iPhone 5 CSS 미디어 쿼리 (0) | 2023.05.31 |
iOS - 코코아 포드에서 헤더 파일을 찾을 수 없는 빌드 실패 (0) | 2023.05.31 |
URL에서 파일을 다운로드하여 레일즈에 저장하려면 어떻게 해야 합니까? (0) | 2023.05.31 |
KDiff3를 git에 대한 병합 도구 및 diff 도구로 구성하려면 어떻게 해야 합니까? (0) | 2023.05.31 |