Sha256: a7601bc6c8ab84cece229c051f32e5f470d138996daf916a147406e414162dce

Contents?: true

Size: 1.69 KB

Versions: 1

Compression:

Stored size: 1.69 KB

Contents

class <%= migration_class_name %> < ActiveRecord::Migration<%= migration_version %>
  # 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
    unless ActiveRecord::Base.connection.table_exists?(:hist_pendings)
      create_table :hist_pendings do |t|
        t.string   :model, {:null=>false}
        t.integer  :obj_id
        t.string   :whodunnit
        t.string   :extra
        t.text     :data, limit: TEXT_BYTES
        t.datetime :discarded_at

        # 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, limit: 6
      end
      add_index :hist_pendings, %i(model obj_id)

      unless index_exists? :hist_pendings, [:discarded_at], name: 'hist_pending_discarded_idy'
        add_index :hist_pendings, [:discarded_at], name: 'hist_pending_discarded_idy'
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
hist-0.2.0 lib/generators/hist/templates/db/create_hist_pendings.rb.erb