前提・実現したいこと
既存のカラムのデフォルト値を変更したいです。
発生している問題・エラーメッセージ
特にエラーは発生せずrails db:migrateしても反映されません。
該当のソースコード
マイグレーションファイルにstatusカラムを追加する際に初期値としてdefault: 0を入れたのですが反映されずにいました。
ruby
1class AddStatusToProducts < ActiveRecord::Migration[6.0] 2 def change 3 add_column :products, :status, :integer, default: 0 4 end 5end
ruby
1 create_table "products", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t| 2 t.string "title" 3 t.string "desc" 4 t.datetime "created_at", precision: 6, null: false 5 t.datetime "updated_at", precision: 6, null: false 6 t.bigint "user_id", null: false 7 t.integer "status" 8 t.integer "goal_price" 9 t.index ["user_id"], name: "index_products_on_user_id" 10 end
試した事
新たに変更を加えるマイグレーションファイルを作り二種類の書き方をして見ましたが反映されずにいます。
ruby
1class AddStatusDefalutToProducts < ActiveRecord::Migration[6.0] 2 def up 3 change_column :products, :status, :integer, default: 0 4 end 5 6 def down 7 change_column :products, :status, :integer 8 end 9end
ruby
1class AddStatusDefalutToProducts < ActiveRecord::Migration[6.0] 2 def change 3 change_column_default :products, :status, :integer, default: 0 4 end 5end
補足情報(FW/ツールのバージョンなど)
ruby 2.6.5
Rails 6.0.3.2
db
MySQL 5.7.32
「add_column :products, :status, :integer, default: 0 したときに、既に有るレコードに status は追加されたが、0ではなく nil であった」 ということでしょうか?
その後のchange某は既存のレコードには処理が及ばないと思うので、、、、
お答え頂きありがとうございます。
>「add_column :products, :status, :integer, default: 0 したときに、既に有るレコードに status は追加されたが、0ではなく nil であった」
勉強不足で申し訳ないのですがこの場合nilと言う表現が正しいかは分かりませんが
>t.integer "status"
の様に単純にstatusカラムのみ追加されました。
>その後のchange某は既存のレコードには処理が及ばないと思うので、、、、
と言うことはchange某以外を使ってレコードに処理がおよぶやり方をしないといけないとう言うことでしょうか?
回答1件
あなたの回答
tips
プレビュー