레일 마이그레이션을 사용하여 열을 내리는 방법
레일즈 마이그레이션을 통해 데이터베이스 테이블 열을 삭제하는 구문은 무엇입니까?
remove_column :table_name, :column_name
예를 들어:
remove_column :users, :hobby
사용자 테이블에서 취미 열을 제거합니다.
이전 버전의 레일의 경우
ruby script/generate migration RemoveFieldNameFromTableName field_name:datatype
레일 3 이상의 경우
rails generate migration RemoveFieldNameFromTableName field_name:datatype
레일 4가 업데이트되었으므로 변경 방법을 마이그레이션에 사용하여 열을 삭제할 수 있으며 마이그레이션이 성공적으로 롤백됩니다.레일 3 응용 프로그램에 대한 다음 경고를 읽으십시오.
레일 3 경고
이 명령을 사용할 때는 다음과 같이 하십시오.
rails generate migration RemoveFieldNameFromTableName field_name:datatype
생성된 마이그레이션은 다음과 같습니다.
def up
remove_column :table_name, :field_name
end
def down
add_column :table_name, :field_name, :datatype
end
데이터베이스 테이블에서 열을 제거할 때 변경 방법을 사용하지 마십시오(Rails 3 앱의 마이그레이션 파일에서 원하지 않는 내용 예).
def change
remove_column :table_name, :field_name
end
레일 3의 변경 방법은 remove_column과 관련하여 현명하지 않으므로 이 마이그레이션을 롤백할 수 없습니다.
Rails4 앱에서는 열을 제거하는 경우에도 변경 방법을 사용할 수 있습니다.세 번째 매개 변수는 data_type이며 선택적인 four에서 옵션을 지정할 수 있습니다.설명서의 '사용 가능한 변환' 섹션에는 약간 숨겨져 있습니다.
class RemoveFieldFromTableName < ActiveRecord::Migration
def change
remove_column :table_name, :field_name, :data_type, {}
end
end
이를 위한 두 가지 좋은 방법이 있습니다.
remove_column
다음과 같이 remove_column을 사용할 수 있습니다.
remove_column :users, :first_name
스키마를 한 번만 변경하면 되는 경우에는 이 옵션을 선택해도 됩니다.
change_테이블 블록
다음과 같이 change_table 블록을 사용하여 이 작업을 수행할 수도 있습니다.
change_table :users do |t|
t.remove :first_name
end
읽기 쉽고 한 번에 여러 번 변경할 수 있기 때문에 더 좋습니다.
다음은 지원되는 change_table 메서드의 전체 목록입니다.
http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_table
레일 5 및 6에 대한 명확하고 간단한 지침
- 경고: 데이터가 손실됩니다.
- 경고: 아래 지침은 사소한 마이그레이션을 위한 것입니다.수백만 개의 행, 읽기/쓰기 dbs, 클러스터 등이 포함된 복잡한 마이그레이션의 경우 이 권장 사항은 다음과 같습니다.
마이그레이션 만들기
터미널에서 다음 명령을 실행합니다.
rails generate migration remove_fieldname_from_tablename fieldname:fieldtype
(관습에 따라 복수로 된 테이블 이름).여기에 있는 설명서를 참조하십시오.)
예: rails g migration RemoveAcceptedFromQuotes accepted:boolean
마이그레이션 확인
# db/migrate/20190122035000_remove_accepted_from_quotes.rb
class RemoveAcceptedFromQuotes < ActiveRecord::Migration[5.2]
# with rails 5.2 you don't need to add a separate "up" and "down" method.
def change
remove_column :quotes, :accepted, :boolean
end
end
마이그레이션 실행
rake db:migrate
또는rails db:migrate
다 (둘다같습다니)다둘
..그리고 나서 경주에 나가요!
열을합니다.rake db:migrate
), 열을 삭제해야 합니다.또한 이 마이그레이션이 롤백되는 경우 열을 다시 추가해야 합니다.rake db:rollback
).
구문:
remove_column :table_name, :column_name, :type
열을 제거하고 마이그레이션이 롤백되는 경우 열을 다시 추가합니다.
예:
remove_column :users, :last_name, :string
참고: data_type을 건너뛰면 마이그레이션이 성공적으로 열을 제거하지만 마이그레이션을 롤백하면 오류가 발생합니다.
레일 5에서 터미널에서 다음 명령을 사용할 수 있습니다.
rails generate migration remove_COLUMNNAME_from_TABLENAME COLUMNNAME:DATATYPE
테이블 사용자에서 access_level(string) 열을 제거하는 예:
rails generate migration remove_access_level_from_users access_level:string
그런 다음 실행:
rake db:migrate
RAIL 5 앱의 열 제거
rails g migration Remove<Anything>From<TableName> [columnName:type]
은▁file 안에 합니다.db/migrate
디렉토리입니다.generator에서 열 중입니다.
class RemoveAgeFromUsers < ActiveRecord::Migration
def up
remove_column :users, :age
end
def down
add_column :users, :age, :integer
end
end
레일즈에 대한 빠른 참조 가이드도 여기에서 찾을 수 있습니다.
다음을 시도할 수 있습니다.
remove_column :table_name, :column_name
(공식 문서)
rails g migration RemoveXColumnFromY column_name:data_type
=열 X = 열이름
= Y = 테이블 이름
편집
변경되었다.RemoveXColumnToY
RemoveXColumnFromY
comments - 더 per comments - doing.as 수중행보작명설다니명합게확하마다이을업그인제레실이션이로▁as▁per다▁more▁is니▁provides▁for.
테이블에서 열을 제거하려면 다음 마이그레이션을 실행해야 합니다.
rails g migration remove_column_name_from_table_name column_name:data_type
그런 다음 명령을 실행합니다.
rake db:migrate
remove_column
change
메소드는 테이블에서 열을 삭제하는 데 도움이 됩니다.
class RemoveColumn < ActiveRecord::Migration
def change
remove_column :table_name, :column_name, :data_type
end
end
자세한 내용은 다음 링크를 참조하십시오. http://guides.rubyonrails.org/active_record_migrations.html
표에서 열을 쉽게 3단계로 제거하려면 다음과 같이 하십시오.
- 이 명령어를 작성합니다.
rails g migration remove_column_from_table_name
터미널 1 파일에서 이 명령을 실행한 후 이 이름과 타임스탬프로 생성됩니다(_table_name에서_column 제거).
그러면 이 파일로 이동합니다.
당신이 써야 하는 내부 파일
remove_column :table_name, :column_name
마지막으로 콘솔로 이동한 다음 수행
rake db:migrate
자체적으로 마이그레이션 파일에 추가할 아래 명령을 제공합니다.
rails g migration RemoveColumnFromModel
위 명령을 실행한 후 마이그레이션 파일 remove_column 코드가 직접 추가되어야 함을 확인할 수 있습니다.
그런 다음 DB를 마이그레이션합니다.
rake db:migrate
1단계: 마이그레이션 생성
rails g migration remove_column_name_from_table
2단계: 방금 만든 파일 마이그레이션의 코드 변경
레일 버전 < 3
def change
remove_column :table_name, :column_name, :datatype
end
레일 버전 > = 3
def change
remove_column :table_name, :column_name
end
3단계: 마이그레이션
rake db:migrate
레일 콘솔에서 하나 더 제공
ActiveRecord::Migration.remove_column(:table_name, :column_name)
간단히 열을 제거할 수 있습니다.
remove_column :table_name, :column_name
예를들면,
remove_column :posts, :comment
먼저 다음 명령을 실행하는 마이그레이션 파일을 만듭니다.
rails g migration RemoveAgeFromUsers age:string
그런 다음 프로젝트의 루트 디렉터리에서 다음 명령을 실행하여 마이그레이션을 실행합니다.
rails db:migrate
통해.
remove_column :table_name, :column_name
마이그레이션 파일에서
다음을 입력하여 레일 콘솔에서 직접 열을 제거할 수 있습니다.
ActiveRecord::Base.remove_column :table_name, :column_name
이렇게 합니다;
rails g migration RemoveColumnNameFromTables column_name:type
예.rails g migration RemoveTitleFromPosts title:string
어쨌든 ActiveRecord는 런타임에 데이터베이스 열을 캐시하므로 앱이 재부팅될 때까지 예외가 발생할 수 있으므로 다운타임도 고려하는 것이 좋습니다.
- 열을 모형에서 무시됨으로 표시
class MyModel < ApplicationRecord
self.ignored_columns = ["my_field"]
end
- 마이그레이션 생성
$ bin/rails g migration DropMyFieldFromMyModel
- 마이그레이션 편집
class DropMyFieldFromMyModel < ActiveRecord::Migration[6.1]
def change
safety_assured { remove_column :my_table, :my_field }
end
end
- 마이그레이션 실행
$ bin/rails db:migrate
레일 마이그레이션 명령을 사용할 수 있습니다.
rails generate migration RemoveColumnNameFromTableName column_name:column_type
데이터베이스를 마이그레이션할 수 있습니다.
rails db:migrate
레일 콘솔에서 실행하기만 하면 됩니다.
ActiveRecord::Base.connection.remove_column("table_name", :column_name, :its_data_type)
또는
TableName.find_by_sql(“ALTER TABLE table_name DROP column_name”)
언급URL : https://stackoverflow.com/questions/2831059/how-to-drop-columns-using-rails-migration
'programing' 카테고리의 다른 글
Excel은 탭으로 구분된 파일을 줄 바꿈 없이 저장합니다(UNIX/Macos X). (0) | 2023.06.15 |
---|---|
소방서:다중 조건부 where 절 (0) | 2023.06.15 |
TypeScript로 check i18n 사전을 타이핑하는 방법은 무엇입니까? (0) | 2023.06.15 |
Oracle: 방금 삽입한 행의 시퀀스 번호를 가져오려면 어떻게 해야 합니까? (0) | 2023.06.15 |
iPad/iPhone에서 CSS 제출 버튼 이상한 렌더링 (0) | 2023.06.15 |