123456789_123456789_123456789_123456789_123456789_

Class: ActiveRecord::Schema

Relationships & Source Files
Namespace Children
Modules:
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, Migration
Instance Chain:
Inherits: ActiveRecord::Migration::Current
Defined in: activerecord/lib/active_record/schema.rb

Overview

Allows programmers to programmatically define a schema in a portable DSL. This means you can define tables, indexes, etc. without using SQL directly, so your applications can more easily support multiple databases.

Usage:

ActiveRecord::Schema[7.0].define do
  create_table :authors do |t|
    t.string :name, null: false
  end

  add_index :authors, :name, :unique

  create_table :posts do |t|
    t.integer :author_id, null: false
    t.string :subject
    t.text :body
    t.boolean :private, default: false
  end

  add_index :posts, :author_id
end

Schema is only supported by database adapters that also support migrations, the two features being very similar.

Class Attribute Summary

Migration - Inherited

.verbose

Specifies if migrations will write the actions they are taking to the console as they happen, along with benchmarks describing how long each step took.

Class Method Summary

Migration - Inherited

.[],
.check_all_pending!

Raises PendingMigrationError error if any migrations are pending for all database configurations in an environment.

.current_version,
.disable_ddl_transaction!

Disable the transaction wrapping this migration.

.load_schema_if_pending!, .migrate, .new

Instance Attribute Summary

Migration - Inherited

#name, #reverting?,
#verbose

Alias for class attribute .verbose

#version

Instance Method Summary

Migration - Inherited

#announce, #connection, #connection_pool, #copy, #down, #exec_migration, #execution_strategy, #method_missing,
#migrate

Execute this migration in the named direction.

#next_migration_number

Determines the version number of the next migration.

#proper_table_name

Finds the correct table name given an Active Record object.

#reversible

Used to specify an operation that can be run in one direction or another.

#revert

Reverses the migration commands for the given block and the given migrations.

#run

Runs the given migration classes.

#say

Takes a message argument and outputs it as is.

#say_with_time

Outputs text along with how long it took to run its block.

#suppress_messages

Takes a block as an argument and suppresses any output generated by the block.

#up,
#up_only

Used to specify an operation that is only run when migrating up (for example, populating a new column with its initial values).

#write

Constructor Details

This class inherits a constructor from ActiveRecord::Migration

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class ActiveRecord::Migration

Class Method Details

.[](version)

[ GitHub ]

  
# File 'activerecord/lib/active_record/schema.rb', line 70

def self.[](version)
  @class_for_version ||= {}
  @class_for_version[version] ||= Class.new(Migration::Compatibility.find(version)) do
    include Definition
  end
end