Add timestamps to an existing table

前端 未结 21 1141
予麋鹿
予麋鹿 2020-12-12 14:34

I need to add timestamps (created_at & updated_at) to an existing table. I tried the following code but it didn\'t work.

class          


        
21条回答
  •  悲&欢浪女
    2020-12-12 15:08

    A lot of answers here, but I'll post mine too because none of the previous ones really worked for me :)

    As some have noted, #add_timestamps unfortunately adds the null: false restriction, which will cause old rows to be invalid because they don't have these values populated. Most answers here suggest that we set some default value (Time.zone.now), but I wouldn't like to do that because these default timestamps for old data will not be correct. I don't see the value in adding incorrect data to the table.

    So my migration was simply:

    class AddTimestampsToUser < ActiveRecord::Migration
      def change_table
        add_column :projects, :created_at, :datetime
        add_column :projects, :updated_at, :datetime
      end
    end
    

    No null: false, no other restrictions. Old rows will continue being valid with created_at as NULL, and update_at as NULL (until some update is performed to the row). New rows will have created_at and updated_at populated as expected.

提交回复
热议问题