답변:
수행 방법은 다음과 같습니다.
change_column :users, :admin, :boolean, :default => false
그러나 PostgreSQL과 같은 일부 데이터베이스는 이전에 작성된 행의 필드를 업데이트하지 않으므로 마이그레이션시 필드를 수동으로 업데이트해야합니다.
change_column_default :employees, :foreign, false
from:
하고 to:
만약 그것을 뒤집을 수 있기를 원한다면 :)
들어 레일 4+ 사용change_column_default
def change
change_column_default :table, :column, value
end
def change
`add_column : FOOS, 이름, 기본 :``change_column_default "기존 값에 대한 뭔가", FOOS, 이름, 기본 : ""`end
change_column_default :products, :approved, from: true, to: 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
Rails 4부터 기본값을 사용하여 테이블에 열을 추가하기 위해 마이그레이션을 생성 할 수 없습니다 . 다음 단계는 기본값이 true 또는 false 인 기존 테이블에 새 열을 추가합니다.
$ rails generate migration add_columnname_to_tablename columnname:boolean
위의 명령은 테이블에 새 열을 추가합니다.
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 : 마이그레이션
Key is not present in table error
.
이것이 당신이 할 수있는 일입니다 :
class Profile < ActiveRecord::Base
before_save :set_default_val
def set_default_val
self.send_updates = 'val' unless self.send_updates
end
end
편집 : ...하지만 분명히 이것은 신인 실수입니다!
before_save
up
블록이 아닌 블록에 넣으십시오change
.down
블록을 비워 둘 수 있습니다 . 테이블을 원래 상태로 되 돌리지 않지만 마이그레이션을 롤백 할 수 있습니다.