내 Rails (3.2) 앱에는 데이터베이스에 많은 테이블이 있지만 null이 아닌 제약 조건을 추가하는 것을 잊었습니다. Google에서 검색했지만 기존 열에 null을 추가하지 않는 마이그레이션을 작성하는 방법을 찾을 수 없습니다.
티아.
답변
Rails 4+의 경우, nates의 답변 ( change_column_null 사용 )이 더 좋습니다.
프리 레일 4, change_column을 시도하십시오 .
답변
change_column_null 을 사용할 수도 있습니다 .
change_column_null :table_name, :column_name, false
답변
1) FIRST : 기본값으로 열 추가
2) THEN : 기본값 제거
add_column :orders, :items, :integer, null: false, default: 0
change_column :orders, :items, :integer, default: nil
답변
새로운 작성 마이그레이션 스크립트 / 스키마에서이를 사용하는 경우이를 정의하는 방법은 다음과 같습니다.
class CreateUsers < ActiveRecord::Migration[5.2]
def change
create_table :users do |t|
t.string :name, null: false # Notice here, NOT NULL definition
t.string :email, null: false
t.string :password, null: false
t.integer :created_by
t.integer :updated_by
t.datetime :created_at
t.datetime :updated_at, default: -> { 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP' }
end
end
end