You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.5 KiB
36 lines
1.5 KiB
# This migration creates the `versions` table, the only schema PT requires. |
|
# All other migrations PT provides are optional. |
|
class CreateVersions < ActiveRecord::Migration[6.1] |
|
|
|
# The largest text column available in all supported RDBMS is |
|
# 1024^3 - 1 bytes, roughly one gibibyte. We specify a size |
|
# so that MySQL will use `longtext` instead of `text`. Otherwise, |
|
# when serializing very large objects, `text` might not be big enough. |
|
TEXT_BYTES = 1_073_741_823 |
|
|
|
def change |
|
create_table :versions do |t| |
|
t.string :item_type, { null: false } |
|
t.bigint :item_id, null: false |
|
t.string :event, null: false |
|
t.string :whodunnit |
|
t.text :object, limit: TEXT_BYTES |
|
|
|
# Known issue in MySQL: fractional second precision |
|
# ------------------------------------------------- |
|
# |
|
# MySQL timestamp columns do not support fractional seconds unless |
|
# defined with "fractional seconds precision". MySQL users should manually |
|
# add fractional seconds precision to this migration, specifically, to |
|
# the `created_at` column. |
|
# (https://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html) |
|
# |
|
# MySQL users should also upgrade to at least rails 4.2, which is the first |
|
# version of ActiveRecord with support for fractional seconds in MySQL. |
|
# (https://github.com/rails/rails/pull/14359) |
|
# |
|
t.datetime :created_at |
|
end |
|
add_index :versions, %i(item_type item_id) |
|
end |
|
end
|
|
|