site

Website's source files.
git clone git://git.ryanmj.xyz/site.git
Log | Files | Refs | LICENSE

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