마이그레이션을 통해 기본값을 열에 추가
마이그레이션을 통해 이미 존재하는 열에 기본값을 어떻게 추가합니까?
내가 찾을 수있는 모든 문서는 열이 존재하지 않지만이 경우에는 수행하는 방법을 보여줍니다.
수행 방법은 다음과 같습니다.
change_column :users, :admin, :boolean, :default => false
그러나 PostgreSQL과 같은 일부 데이터베이스는 이전에 생성 된 행의 필드를 업데이트하지 않으므로 마이그레이션시 필드를 수동으로 업데이트해야합니다.
change_column_default :employees, :foreign, false
들어 레일 4+ 사용change_column_default
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 인 기존 테이블에 새 열을 추가합니다.
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
실행 :
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, : boolean, : 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
'development' 카테고리의 다른 글
R에 객체 (변수)가 정의되어 있는지 확인하는 방법은 무엇입니까? (0) | 2020.04.01 |
---|---|
https 만 사용하여 Bower를 설치 하시겠습니까? (0) | 2020.04.01 |
옵션 변경 방법 (0) | 2020.04.01 |
: after를 사용하여 요소 뒤에 공백 (“”) 추가 (0) | 2020.04.01 |
엔터티 프레임 워크. (0) | 2020.04.01 |