마이그레이션을 통해 열에 기본값 추가
마이그레이션을 통해 이미 존재하는 열에 기본값을 추가하려면 어떻게 해야 합니까?
제가 찾을 수 있는 모든 문서에는 열이 존재하지 않지만 이 경우에는 존재하는 방법이 나와 있습니다.
다음은 이 작업을 수행하는 방법입니다.
change_column :users, :admin, :boolean, :default => false
하지만 Postgre와 같은 일부 데이터베이스는SQL에서는 이전에 만든 행에 대한 필드를 업데이트하지 않으므로 마이그레이션할 때도 수동으로 필드를 업데이트해야 합니다.
change_column_default :employees, :foreign, false
레일 4+의 경우,
def change
change_column_default :table, :column, value
end
사용.def change
즉, 되돌릴 수 있는 마이그레이션을 작성해야 합니다.그리고.change_column
되돌릴 수 없습니다.올라갈 수는 있지만 내려갈 수는 없다, 왜냐하면.change_column
되돌릴 수 없습니다.
대신, 몇 개의 추가 라인일 수도 있지만, 당신은 사용해야 합니다.def up
그리고.def down
따라서 기본값이 없는 열이 있는 경우에는 이 작업을 수행하여 기본값을 참조하십시오.
def up
change_column :users, :admin, :boolean, default: false
end
def down
change_column :users, :admin, :boolean, default: nil
end
또는 기존 열의 기본값을 변경하려는 경우.
def up
change_column :users, :admin, :boolean, default: false
end
def down
change_column :users, :admin, :boolean, default: true
end
**레일 4.X +**
Rails 4 이후에는 기본값이 있는 테이블에 열을 추가하는 마이그레이션을 생성할 수 없습니다. 다음 단계에서는 기본값이 true 또는 false인 기존 테이블에 새 열을 추가합니다.
명령줄에서 마이그레이션을 실행하여 새 열 추가
$ rails generate migration add_columnname_to_tablename columnname:boolean
위의 명령을 사용하면 테이블에 새 열이 추가됩니다.
생성된 새 마이그레이션 파일을 편집하여 새 열 값을 TRUE/FALSE로 설정합니다.
class AddColumnnameToTablename < ActiveRecord::Migration
def change
add_column :table_name, :column_name, :boolean, default: false
end
end
**3. 응용프로그램 데이터베이스 테이블을 변경하려면 터미널에서 다음 명령을 실행합니다.**
$ rake db:migrate
실행:
rails generate migration add_column_to_table column:boolean
다음 마이그레이션이 생성됩니다.
class AddColumnToTable < ActiveRecord::Migration
def change
add_column :table, :column, :boolean
end
end
기본값 추가 설정:default => 1
add_column :table, :column, :column, :default => 1
실행:
갈퀴 db:갈퀴
다음과 같은 작업을 수행할 수 있습니다.
class Profile < ActiveRecord::Base
before_save :set_default_val
def set_default_val
self.send_updates = 'val' unless self.send_updates
end
end
편집: ...하지만 분명히 이것은 루키의 실수입니다!
언급URL : https://stackoverflow.com/questions/7098602/add-a-default-value-to-a-column-through-a-migration
'source' 카테고리의 다른 글
왜 제가 "반드시 무시당해야 할 무효 가치"를 얻게 되는 걸까요? (0) | 2023.06.18 |
---|---|
배열의 일부 요소만 일부 값으로 초기화하는 방법은 무엇입니까? (0) | 2023.06.18 |
가상 env에 Python Windows 패키지를 설치할 수 있습니까? (0) | 2023.06.18 |
상태가 검토 대기 중인 이진 거부(이진 거부 단추를 찾을 수 없음) (0) | 2023.06.18 |
자동 레이아웃을 사용할 때 CAL 레이어의 앵커 포인트를 조정하려면 어떻게 해야 합니까? (0) | 2023.06.18 |