복붙노트

[RUBY-ON-RAILS] 마이그레이션을 통해 열에 기본값 추가

RUBY-ON-RAILS

마이그레이션을 통해 열에 기본값 추가

어떻게이 이미 마이그레이션을 통해 존재하는 컬럼에 디폴트 값을 추가하는 방법은 무엇입니까?

열이 이미 있지만 않습니다이 경우에는 존재하지 않는 경우 당신이 그것을 수행하는 방법을 보여줍니다 찾을 수있는 모든 문서.

해결법

  1. ==============================

    1.여기 당신이 그것을 할 방법입니다 :

    여기 당신이 그것을 할 방법입니다 :

    change_column :users, :admin, :boolean, :default => false
    

    그러나 일부 데이터베이스는 PostgreSQL을 같은, 그래서 당신이 너무 마이그레이션에 manaully 필드를 업데이트 할 수 있도록, 이전에 생성 된 행에 대한 필드를 업데이트하지 않습니다.

  2. ==============================

    2.

    change_column_default :employees, :foreign, false
    
  3. ==============================

    3.레일 4+를 사용 change_column_default의 경우

    레일 4+를 사용 change_column_default의 경우

    def change
      change_column_default :table, :column, value
    end
    
  4. ==============================

    4.당신이 되돌릴 수 있습니다 마이그레이션을 작성해야 데프 변경 수단을 사용. 그리고 change_column은 되돌릴 수 없습니다. 당신은 올라갈 수 있지만 change_column는 되돌릴 수 있기 때문에 당신은 아래로 갈 수 없다.

    당신이 되돌릴 수 있습니다 마이그레이션을 작성해야 데프 변경 수단을 사용. 그리고 change_column은 되돌릴 수 없습니다. 당신은 올라갈 수 있지만 change_column는 되돌릴 수 있기 때문에 당신은 아래로 갈 수 없다.

    그것은 몇 여분의 라인을있을 수 있지만 대신, 당신은 데프 위 데프 아래로 사용해야합니다

    당신이없는 기본 값을 가진 열이 그렇다면, 당신은 기본 값을 추가하기 위해이 작업을 수행해야합니다.

    def up
      change_column :users, :admin, :boolean, default: false
    end
    
    def down
      change_column :users, :admin, :boolean, default: nil
    end
    

    또는 기존 C 럼의 디폴트 값을 변경하려는 경우.

    def up
      change_column :users, :admin, :boolean, default: false
    end
    
    def down
      change_column :users, :admin, :boolean, default: true
    end
    
  5. ==============================

    5.레일 (4)와 같이 기본 값으로 테이블에 열을 추가하기 위해 마이그레이션을 생성 할 수 없습니다, 다음 단계는 기본 값 true 또는 false로 기존 테이블에 새 열을 추가 할 수 있습니다.

    레일 (4)와 같이 기본 값으로 테이블에 열을 추가하기 위해 마이그레이션을 생성 할 수 없습니다, 다음 단계는 기본 값 true 또는 false로 기존 테이블에 새 열을 추가 할 수 있습니다.

    명령 줄에서 마이그레이션을 실행 1.하면 새 열을 추가합니다

    $ rails generate migration add_columnname_to_tablename columnname:boolean
    

    위의 명령은 테이블에 새 열을 추가합니다.

    2. 만든 새 마이그레이션 파일을 편집하여 TRUE / FALSE로 새 열 값입니다.

    class AddColumnnameToTablename < ActiveRecord::Migration
      def change
        add_column :table_name, :column_name, :boolean, default: false
      end
    end
    
    $ rake db:migrate
    
  6. ==============================

    6.실행 :

    실행 :

    rails generate migration add_column_to_table column:boolean
    

    그것은이 마이그레이션을 생성합니다 :

    class AddColumnToTable < ActiveRecord::Migration
      def change
        add_column :table, :column, :boolean
      end
    end
    

    기본 => 1 : 추가 기본 값을 설정

    운영:

  7. ==============================

    7.이것은 당신이 무엇을 할 수 있습니다 :

    이것은 당신이 무엇을 할 수 있습니다 :

    class Profile < ActiveRecord::Base
      before_save :set_default_val
    
      def set_default_val
        self.send_updates = 'val' unless self.send_updates
      end
    end
    
  8. from https://stackoverflow.com/questions/7098602/add-a-default-value-to-a-column-through-a-migration by cc-by-sa and MIT license