Rails(3.2)アプリでは、データベースに多数のテーブルがありますが、null以外の制約をいくつか追加するのを忘れていました。私はググってみましたが、既存の列にnullでない値を追加する移行を作成する方法を見つけることができません。
TIA。
Rails(3.2)アプリでは、データベースに多数のテーブルがありますが、null以外の制約をいくつか追加するのを忘れていました。私はググってみましたが、既存の列にnullでない値を追加する移行を作成する方法を見つけることができません。
TIA。
回答:
Rails 4+の場合、(change_column_nullを使用した)ネイツの回答の方が優れています。
Rails 4より前の場合は、change_columnを試してください。
IrreversibleMigration
あなたが望むものではないかもしれないことを生成することに注意してください。
change_column_nullを使用することもできます:
change_column_null :table_name, :column_name, false
新しいcreate migrationスクリプト/スキーマで使用している場合は、次のように定義できます。
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
:limit
制約)がある場合、を使用するときにそれらの属性を繰り返す必要があります。そうしないと、属性change_column
が失われます。このため、私は使用することを好んでいますchange_column_null