20220217225631_create_active_storage_tables.active_storage.rb (2195B)
1 # This migration comes from active_storage (originally 20170806125915) 2 class CreateActiveStorageTables < ActiveRecord::Migration[5.2] 3 def change 4 # Use Active Record's configured type for primary and foreign keys 5 primary_key_type, foreign_key_type = primary_and_foreign_key_types 6 7 create_table :active_storage_blobs, id: primary_key_type do |t| 8 t.string :key, null: false 9 t.string :filename, null: false 10 t.string :content_type 11 t.text :metadata 12 t.string :service_name, null: false 13 t.bigint :byte_size, null: false 14 t.string :checksum 15 16 if connection.supports_datetime_with_precision? 17 t.datetime :created_at, precision: 6, null: false 18 else 19 t.datetime :created_at, null: false 20 end 21 22 t.index [ :key ], unique: true 23 end 24 25 create_table :active_storage_attachments, id: primary_key_type do |t| 26 t.string :name, null: false 27 t.references :record, null: false, polymorphic: true, index: false, type: foreign_key_type 28 t.references :blob, null: false, type: foreign_key_type 29 30 if connection.supports_datetime_with_precision? 31 t.datetime :created_at, precision: 6, null: false 32 else 33 t.datetime :created_at, null: false 34 end 35 36 t.index [ :record_type, :record_id, :name, :blob_id ], name: :index_active_storage_attachments_uniqueness, unique: true 37 t.foreign_key :active_storage_blobs, column: :blob_id 38 end 39 40 create_table :active_storage_variant_records, id: primary_key_type do |t| 41 t.belongs_to :blob, null: false, index: false, type: foreign_key_type 42 t.string :variation_digest, null: false 43 44 t.index [ :blob_id, :variation_digest ], name: :index_active_storage_variant_records_uniqueness, unique: true 45 t.foreign_key :active_storage_blobs, column: :blob_id 46 end 47 end 48 49 private 50 def primary_and_foreign_key_types 51 config = Rails.configuration.generators 52 setting = config.options[config.orm][:primary_key_type] 53 primary_key_type = setting || :primary_key 54 foreign_key_type = setting || :bigint 55 [primary_key_type, foreign_key_type] 56 end 57 end