cheat sheets.

$ cheat migrations
--- migrations version 130	Fri Sep 22 03:51:31 +0000 2006
+++ migrations version 172	Wed Jun 18 20:38:00 +0000 2008
@@ -1,42 +1,84 @@
 Methods:
   create_table(name, options)
   drop_table(name)
   rename_table(old_name, new_name)
   add_column(table_name, column_name, type, options)
   rename_column(table_name, column_name, new_column_name)
   change_column(table_name, column_name, type, options)
   remove_column(table_name, column_name)
   add_index(table_name, column_name, index_type)
   remove_index(table_name, column_name)
+
+Available Column Types:
+  * integer
+  * float
+  * datetime
+  * date
+  * timestamp
+  * time
+  * text
+  * string
+  * binary
+  * boolean
+  * decimal :precision, :scale
+
+Valid Column Options:
+  * limit
+  * null (i.e. ":null => false" implies NOT NULL)
+  * default (to specify default values)
+  * :decimal, :precision => 8, :scale => 3
   
 Rake Tasks:
-  rake db_schema_dump: run after you create a model to capture the schema.rb
-  rake db_schema_import: import the schema file into the current database (on
-  error, check if your schema.rb has ”:force => true” on the create table
+  rake db:schema:dump: run after you create a model to capture the schema.rb
+  rake db:schema:import: import the schema file into the current database (on
+  error, check if your schema.rb has ":force => true" on the create table
   statements
   ./script/generate migration MigrationName: generate a new migration with a new
-  ‘highest’ version (run ’./script/generate migration’ for this info at
-  your fingertips)
-  rake migrate: migrate your current database to the most recent version
-  rake migrate VERSION=5: migrate your current database to a specific version
+  'highest' version (run './script/generate migration' for this info at your
+  fingertips)
+  rake db:migrate: migrate your current database to the most recent version
+  rake db:migrate VERSION=5: migrate your current database to a specific version
   (in this case, version 5)
+  rake db:rollback: migrate down one migration
+  rake db:rollback STEP=3: migrate down three migrations
+  rake db:migrate RAILS_ENV=production: migrate your production database
+
+SQL:
+  Queries can be executed directly:
+  execute 'ALTER TABLE researchers ADD CONSTRAINT fk_researchers_departments
+  FOREIGN KEY ( department_id ) REFERENCES departments( id )'
   
 Example Migration:
   class UpdateUsersAndCreateProducts < ActiveRecord::Migration
     def self.up
       rename_column "users", "password", "hashed_password" 
       remove_column "users", "email" 
 
+       User.reset_column_information
+       User.find(:all).each{|u| #do something with u}
+
       create_table "products", :force => true do |t|
           t.column "name", :text
           t.column "description", :text
+          t.column &quot;price&quot;, :decimal, :precision =&gt; 9, :scale =&gt; 2
       end
+
+      #the rails 2.0 way:
+      create_table :people do |t|
+        t.integer :account_id
+        t.string  :first_name, :last_name, :null =&gt; false
+        t.text    :description
+        t.timestamps
+      end
     end
 
     def self.down
       rename_column "users", "hashed_password", "password" 
-      add_column &quot;users&quot;, &quot;email&quot; 
+      add_column &quot;users&quot;, &quot;email&quot;, :string
       drop_table "products" 
     end
   end
+
+Find Highest version:
+  script/runner &quot;puts ActiveRecord::Migrator.current_version&quot;
( add new | see all )