마이그레이션을 통해 이미 존재하는 열에 기본값을 어떻게 추가합니까?
내가 찾을 수있는 모든 문서는 열이 존재하지 않지만이 경우에는 수행하는 방법을 보여줍니다.
답변
수행 방법은 다음과 같습니다.
change_column :users, :admin, :boolean, :default => false
그러나 PostgreSQL과 같은 일부 데이터베이스는 이전에 작성된 행의 필드를 업데이트하지 않으므로 마이그레이션시 필드를 수동으로 업데이트해야합니다.
답변
change_column_default :employees, :foreign, false
답변
답변
사용 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
편집 : …하지만 분명히 이것은 신인 실수입니다!