How to set a default value for a datetime column to record creation time in a migration?

后端 未结 7 668
日久生厌
日久生厌 2020-12-04 13:42

Consider the table creation script below:

create_table :foo do |t|
  t.datetime :starts_at, :null => false
end

Is it\'s possible to set

7条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-04 14:35

    I usually do:

    def change
      execute("
        ALTER TABLE your_table
        ALTER COLUMN your_column
        SET DEFAULT CURRENT_TIMESTAMP
      ")
    end
    

    So, your schema.rb is going to have something like:

    create_table "your_table", force: :cascade do |t|
      t.datetime "your_column", default: "now()"
    end
    

提交回复
热议问题