Ruby on Rails : 마이그레이션을 사용하여 기존 열에 null이 아닌 제약 조건을 어떻게 추가합니까? Rails (3.2)

내 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


답변