{memo: :rails3, command: :rails_generate_migration}
I checked with Rails 3.0.5 - 3.0.7
reference
create table
$ r g scaffold diary shop:string date_on:date
invoke active_record
create db/migrate/20110418065125_create_diaries.rb
...
create public/stylesheets/scaffold.css
add column with table
rails console
$ r c Loading development environment (Rails 3.0.6) ruby-1.9.2-p136 :001 > Diary => Diary(id: integer, shop: string, date_on: date, created_at: datetime, updated_at: datetime)
rails generate migration Add#{add_column_name}To#{added_table_name} column_name:type
$ r g migration AddAddressToDiary address:string invoke active_record create db/migrate/20110418122704_add_address_to_diary.rb $ r c ruby-1.9.2-p136 :001 > Diary => Diary(id: integer, shop: string, date_on: date, created_at: datetime, updated_at: datetime)
$ rake db:migrate (in /home/alice/rails/mytest) == AddAddressToDiary: migrating ============================================== -- add_column(:diaries, :address, :string) -> 0.0007s == AddAddressToDiary: migrated (0.0007s) ===================================== $ r c Loading development environment (Rails 3.0.6) ruby-1.9.2-p136 :001 > Diary => Diary(id: integer, shop: string, date_on: date, created_at: datetime, updated_at: datetime, address: string)
last add column is delete
rake db:rollback
$ r c Loading development environment (Rails 3.0.6) ruby-1.9.2-p136 :001 > Diary => Diary(id: integer, shop: string, date_on: date, created_at: datetime, updated_at: datetime, address: string)
$ rake db:rollback [STEP=n] (in /home/alice/rails/mytest) == AddAddressToDiary: reverting ============================================== -- remove_column(:diaries, :address) -> 0.0452s == AddAddressToDiary: reverted (0.0453s) =====================================
$ r c Loading development environment (Rails 3.0.6) ruby-1.9.2-p136 :001 > Diary => Diary(id: integer, shop: string, date_on: date, created_at: datetime, updated_at: datetime)
change column*1
you'll generate migration file.
rails generate migration FixColumnName
$ r g migration FixColumnName
invoke active_record
create db/migrate/20110421143838_fix_column_name.rb
Then you edit db/migrate/20110421143838_fix_column_name.rb.
rename_column(table_name, column_name, new_column_name)
class FixColumnName < ActiveRecord::Migration def self.up rename_column :diaries, :address, :shop_address end def self.down rename_column :diaries, :shop_address, :address end end
$ rake db:migrate (in /home/alice/rails/mytest) == FixColumnName: migrating ================================================== -- rename_column(:diaries, :address, :shop_address) -> 0.0206s == FixColumnName: migrated (0.0207s) ========================================= $ r c Loading development environment (Rails 3.0.6) ruby-1.9.2-p136 :001 > Diary => Diary(id: integer, shop: string, date_on: date, created_at: datetime, updated_at: datetime, shop_address: string)