Class: ActiveRecord::Schema
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
Migration
|
|
Instance Chain:
self,
Migration
|
|
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.define do
create_table : do |t|
t.string :name, null: false
end
add_index :, :name, :unique
create_table :posts do |t|
t.integer :, null: false
t.string :subject
t.text :body
t.boolean :private, default: false
end
add_index :posts, :
end
Schema
is only supported by database adapters that also support migrations, the two features being very similar.
Class Attribute Summary
Class Method Summary
-
.define(info = {}, &block)
Eval the given block.
Migration
- Inherited
.[], | |
.check_pending! | Raises |
.current_version, | |
.disable_ddl_transaction! | Disable the transaction wrapping this migration. |
.load_schema_if_pending!, .migrate, .new |
Instance Attribute Summary
Migration
- Inherited
Instance Method Summary
Migration
- Inherited
#announce, #connection, #copy, #down, #exec_migration, #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, #say_with_time, #suppress_messages, #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
.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: 2038_01_19_000001) do
#...
end
# File 'activerecord/lib/active_record/schema.rb', line 45
def self.define(info = {}, &block) new.define(info, &block) end