Class: CreateVersions
- Inherits:
-
ActiveRecord::Migration
- Object
- ActiveRecord::Migration
- CreateVersions
- Defined in:
- lib/generators/paper_trail/templates/create_versions.rb
Overview
This migration creates the ‘versions` table, the only schema PT requires. All other migrations PT provides are optional.
Constant Summary collapse
- MYSQL_ADAPTERS =
Class names of MySQL adapters.
-
‘MysqlAdapter` - Used by gems: `mysql`, `activerecord-jdbcmysql-adapter`.
-
‘Mysql2Adapter` - Used by `mysql2` gem.
-
[ "ActiveRecord::ConnectionAdapters::MysqlAdapter", "ActiveRecord::ConnectionAdapters::Mysql2Adapter" ].freeze
- TEXT_BYTES =
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.
1_073_741_823
Instance Method Summary collapse
Instance Method Details
#change ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/generators/paper_trail/templates/create_versions.rb', line 18 def change create_table :versions, do |t| t.string :item_type, t.integer :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 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, [:item_type, :item_id] end |