Class: ActiveRecord::Schema
- Inherits:
 - 
      Migration::Current
      
        
- Object
 - Migration
 - Migration::Current
 - ActiveRecord::Schema
 
 
- Defined in:
 - lib/active_record/schema.rb
 
Overview
Active Record Schema
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.
Constant Summary
Constants inherited from Migration
Migration::MigrationFilenameRegexp
Instance Attribute Summary
Attributes inherited from Migration
Class Method Summary collapse
- 
  
    
      .define(info = {}, &block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Eval the given block.
 
Instance Method Summary collapse
- 
  
    
      #define(info, &block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 
Methods inherited from Migration
[], #announce, check_pending!, #connection, #copy, current_version, #disable_ddl_transaction, disable_ddl_transaction!, #down, #exec_migration, inherited, #initialize, load_schema_if_pending!, maintain_test_schema!, method_missing, #method_missing, migrate, #migrate, nearest_delegate, #next_migration_number, #proper_table_name, #reversible, #revert, #reverting?, #run, #say, #say_with_time, #suppress_messages, #table_name_options, #up, #up_only, #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
.define(info = {}, &block) ⇒ Object
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: 2038_01_19_000001) do
  ...
end
  
      45 46 47  | 
    
      # File 'lib/active_record/schema.rb', line 45 def self.define(info = {}, &block) new.define(info, &block) end  | 
  
Instance Method Details
#define(info, &block) ⇒ Object
:nodoc:
      49 50 51 52 53 54 55 56 57 58 59  | 
    
      # File 'lib/active_record/schema.rb', line 49 def define(info, &block) # :nodoc: instance_eval(&block) if info[:version].present? connection.schema_migration.create_table connection.assume_migrated_upto_version(info[:version]) end ActiveRecord::InternalMetadata.create_table ActiveRecord::InternalMetadata[:environment] = connection.migration_context.current_environment end  |