[ruby-on-rails] 마이그레이션을 통해 열에 기본값 추가
마이그레이션을 통해 이미 존재하는 열에 기본값을 어떻게 추가합니까?
내가 찾을 수있는 모든 문서는 열이 존재하지 않지만이 경우에는 수행하는 방법을 보여줍니다.
답변
수행 방법은 다음과 같습니다.
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
편집 : …하지만 분명히 이것은 신인 실수입니다!