add_column(table_name, column_name, type, options = {})
public

Adds a new column to the named table. See TableDefinition#column for details of the options you can use.

7Notes

See TableDefinition#column for options

theill · Aug 23, 200811 thanks

script/generate syntax

neves · Aug 19, 20086 thanks

To add a post_id field to a comments table, run this: script\generate migration add_post_id_to_comment post_id:integer

See that it´s not the table name(plural), but the model name(singular),
and post_id:references, does not works like in create_table.

This is the generated migration:

class AddPostIdToComment < ActiveRecord::Migration def self.up add_column :comments, :post_id, :integer end

def self.down
remove_column :comments, :post_id
end

end

Options

annaswims · Jul 7, 20095 thanks

Available options are (none of these exists by default):

* :limit - Requests a maximum column length. This is number of characters for :string and :text columns and number of bytes for :binary and :integer columns.
* :default - The column‘s default value. Use nil for NULL.
* :null - Allows or disallows NULL values in the column. This option could have been named :null_allowed.
* :precision - Specifies the precision for a :decimal column.
* :scale - Specifies the scale for a :decimal column.

Example

GavinLaking · Jul 22, 20084 thanks

In your migration: def self.up add_column :accounts, :is_admin, :boolean, :default => 0 end

:null => false

dvdplm · Sep 15, 20084 thanks

To not allow a column to have a NULL value, pass :null => false. Seems silly, but that's it.

Redirect...

bquorning · Feb 25, 20101 thank

See ActiveRecord::ConnectionAdapters::TableDefinition#column for details of the options you can use.

script/generate can take table name

shadowfiend · May 15, 2009

As far as I can tell script/generate will happily take the plural table name, at least in Rails 2.3.