Ruby on Rails: Comment append une contrainte non nulle à une colonne existante à l’aide d’une migration?

Dans mon application Rails (3.2), j’ai un tas de tables dans ma firebase database mais j’ai oublié d’append quelques contraintes non nulles. J’ai cherché sur Google mais je ne trouve pas comment écrire une migration qui ajoute non null à une colonne existante.

TIA.

Essayez change_column :

change_column :table_name, :column_name, :column_type, null: false 

Vous pouvez également utiliser change_column_null :

 change_column_null :table_name, :column_name, false 

1) PREMIER: Ajouter une colonne avec une valeur par défaut

2) ALORS: Supprimer la valeur par défaut

 add_column :orders, :items, :integer, null: false, default: 0 change_column :orders, :items, :integer, default: nil 

Si vous l’utilisez sur un nouveau script / schéma de migration, voici comment nous pouvons le définir

 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