[ruby-on-rails] 변경 열의 레일 마이그레이션
우리는 한 script/generate migration add_fieldname_to_tablename fieldname:datatype
모델에 새 열을 추가하는 구문.
같은 줄에 열의 데이터 유형을 변경하는 스크립트 / 생성물이 있습니까? 아니면 바닐라 마이그레이션에 SQL을 직접 작성해야합니까?
나는에서 열을 변경하려면 datetime
에 date
.
답변
나는 이것이 효과가 있다고 생각한다.
change_column :table_name, :column_name, :date
답변
테이블 내에서 변경할 열이 여러 개인 경우 블록을 사용할 수도 있습니다.
예:
change_table :table_name do |t|
t.change :column_name, :column_type, {options}
end
답변
명령 줄에서 마이그레이션을 수행하여이 모든 작업을 수행 할 수 있는지는 알 수 없지만 새 마이그레이션을 생성 한 다음 마이그레이션을 편집하여이 작업을 수행 할 수 있습니다.
tablename이 테이블 이름이고 fieldname이 필드 이름이고 날짜 / 시간을 변경하려는 경우 마이그레이션을 작성하여이를 수행 할 수 있습니다.
다음을 사용하여 새 마이그레이션을 만들 수 있습니다.
rails g migration change_data_type_for_fieldname
그런 다음 change_table을 사용하도록 마이그레이션을 편집하십시오.
class ChangeDataTypeForFieldname < ActiveRecord::Migration
def self.up
change_table :tablename do |t|
t.change :fieldname, :date
end
end
def self.down
change_table :tablename do |t|
t.change :fieldname, :datetime
end
end
end
그런 다음 마이그레이션을 실행하십시오.
rake db:migrate
답변
이전 답변에서 알 수 있듯이 열 유형을 변경하려면 세 단계가 필요합니다.
1 단계:
이 코드를 사용하여 새 마이그레이션 파일을 생성하십시오.
rails g migration sample_name_change_column_type
2 단계:
/db/migrate
폴더로 이동하여 작성한 마이그레이션 파일을 편집하십시오. 두 가지 솔루션이 있습니다.
-
def change change_column(:table_name, :column_name, :new_type) end
2.
def up
change_column :table_name, :column_name, :new_type
end
def down
change_column :table_name, :column_name, :old_type
end
3 단계 :
이 명령을 수행하는 것을 잊지 마십시오 :
rake db:migrate
이 솔루션을 Rails 4에서 테스트했으며 제대로 작동합니다.
답변
레일 5
에서 레일 가이드 :
마이그레이션을 통해 Active Record가 되돌릴 방법을 모르는 작업을 수행하려면 다음을 사용할 수 있습니다
reversible
.
class ChangeTablenameFieldname < ActiveRecord::Migration[5.1]
def change
reversible do |dir|
change_table :tablename do |t|
dir.up { t.change :fieldname, :date }
dir.down { t.change :fieldname, :datetime }
end
end
end
end
답변
마이그레이션을 생성하십시오.
rails g migration change_column_to_new_from_table_name
다음과 같이 마이그레이션을 업데이트하십시오.
class ClassName < ActiveRecord::Migration
change_table :table_name do |table|
table.change :column_name, :data_type
end
end
그리고 마지막으로
rake db:migrate
답변
마이그레이션을 사용하여 데이터 유형을 변경하는 다른 방법
1 단계:
마이그레이션을 사용하여 결함이있는 데이터 유형 필드 이름을 제거해야합니다.
전의:
rails g migration RemoveFieldNameFromTableName field_name:data_type
필드에 데이터 유형을 지정하는 것을 잊지 마십시오
2 단계 :
이제 올바른 데이터 유형으로 필드를 추가 할 수 있습니다
전의:
rails g migration AddFieldNameToTableName field_name:data_type
이제 테이블에 올바른 데이터 유형 필드, 해피 루비 코딩이 추가됩니다!