W mojej aplikacji Rails (3.2) mam kilka tabel w mojej bazie danych, ale zapomniałem dodać kilka nie zerowych ograniczeń. Przeszukałem go, ale nie mogę znaleźć sposobu na napisanie migracji, która dodaje wartość niezerową do istniejącej kolumny.
TIA.
ruby-on-rails
database
migration
constraints
notnull
David Robertson
źródło
źródło
:limit
ograniczenie), musisz powtórzyć te atrybuty podczas używaniachange_column
, w przeciwnym razie zostaną utracone. Z tego powodu wolę używaćchange_column_null
IrreversibleMigration
co może nie być tym, czego chcesz.Możesz również użyć change_column_null :
change_column_null :table_name, :column_name, false
źródło
1) PIERWSZA: Dodaj kolumnę z wartością domyślną
2) TO: Usuń wartość domyślną
add_column :orders, :items, :integer, null: false, default: 0 change_column :orders, :items, :integer, default: nil
źródło
Jeśli używasz go w nowym skrypcie / schemacie tworzenia migracji, tutaj możemy go zdefiniować
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
źródło