[ruby-on-rails] 변경 열의 레일 마이그레이션

우리는 한 script/generate migration add_fieldname_to_tablename fieldname:datatype모델에 새 열을 추가하는 구문.

같은 줄에 열의 데이터 유형을 변경하는 스크립트 / 생성물이 있습니까? 아니면 바닐라 마이그레이션에 SQL을 직접 작성해야합니까?

나는에서 열을 변경하려면 datetimedate.



답변

나는 이것이 효과가 있다고 생각한다.

change_column :table_name, :column_name, :date


답변

테이블 내에서 변경할 열이 여러 개인 경우 블록을 사용할 수도 있습니다.

예:

change_table :table_name do |t|
  t.change :column_name, :column_type, {options}
end

자세한 내용은 Table 클래스API 설명서 를 참조하십시오.


답변

명령 줄에서 마이그레이션을 수행하여이 모든 작업을 수행 할 수 있는지는 알 수 없지만 새 마이그레이션을 생성 한 다음 마이그레이션을 편집하여이 작업을 수행 할 수 있습니다.

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폴더로 이동하여 작성한 마이그레이션 파일을 편집하십시오. 두 가지 솔루션이 있습니다.

  1. 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

이제 테이블에 올바른 데이터 유형 필드, 해피 루비 코딩이 추가됩니다!