Class | ActiveRecord::Schema
In: | lib/active_record/schema.rb
Parent: | Migration

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.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

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

### Methods

define

### Public Class methods

define(info={}, &block)

Eval the given block. All methods available to the current connection adapter are available within the block, so you can easily use the database definition DSL to build up your schema (`create_table`, `add_index`, etc.).

The `info` hash is optional, and if given is used to define metadata about the current schema (currently, only the schema‘s version):

      ActiveRecord::Schema.define(:version => 20380119000001) do
        ...
      end

[Validate]