From 3e3e8ef83c0cf041c49772fb114be703e1bff5d4 Mon Sep 17 00:00:00 2001 From: "Rico Sta. Cruz" Date: Fri, 16 Mar 2012 19:45:06 +0800 Subject: [PATCH] Migrations. --- rails-migrations.md | 92 +++++++++++++++++++++++++++++++++++++++++++++ rails-models.md | 67 --------------------------------- 2 files changed, 92 insertions(+), 67 deletions(-) create mode 100644 rails-migrations.md diff --git a/rails-migrations.md b/rails-migrations.md new file mode 100644 index 000000000..d7c9d8bd8 --- /dev/null +++ b/rails-migrations.md @@ -0,0 +1,92 @@ +title: Rails migrations +------- + +### Run migrations + + $ rake db:migrate + +### Migrations + + create_table :users do |t| + t.string :name + t.text :description + + t.primary_key :id + t.string :title + t.text :description + t.integer :games_count + t.float :lol + t.decimal :price + t.decimal :price, :precision => 2, :scale => 10 + t.datetime :expiration + t.timestamp :time_in + t.time :time_in + t.date :expiry + t.binary :image_data + t.boolean :is_admin + end + + # Options: + :null (boolean) + :limit (integer) + :default + +### Operations + + create_table + change_table + drop_table + add_column + change_column + rename_column + remove_column + add_index + remove_index + +### Associations + + t.references :category # kinda same as t.integer :category_id + + # Can have different types + t.references :category, polymorphic: true + +### Add/remove columns + + $ rails generate migration RemovePartNumberFromProducts part_number:string + + class RemovePartNumberFromProducts < ActiveRecord::Migration + def up + remove_column :products, :part_number + end + + def down + add_column :products, :part_number, :string + end + end + +### Indices + + # Simple + add_index :suppliers, :name + + # Unique + add_index :accounts, [:branch_id, :party_id], :unique => true + + # Named (:name => ...) + add_index :accounts, [:branch_id, :party_id], :unique => true, :name => "by_branch_party" + + # Length + add_index :accounts, :name, :name => ‘by_name’, :length => 10 + add_index :accounts, [:name, :surname], :name => ‘by_name_surname’, + :length => { + :name => 10, + :surname => 15 + } + + # Sort order (no MySQL support) + add_index :accounts, [:branch_id, :party_id, :surname], + :order => {:branch_id => :desc, :part_id => :asc} + +### References + + * http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/add_index diff --git a/rails-models.md b/rails-models.md index 964ad7fad..20d367c73 100644 --- a/rails-models.md +++ b/rails-models.md @@ -84,73 +84,6 @@ And in migrations: t.references :post, :polymorphic => true end -Migrations ----------- - -### Run migrations - - $ rake db:migrate - -### Migrations - - create_table :users do |t| - t.string :name - t.text :description - - t.primary_key :id - t.string - t.text - t.integer - t.float - t.decimal - t.datetime - t.timestamp - t.time - t.date - t.binary - t.boolean - end - - options: - :null (boolean) - :limit (integer) - :default - :precision (integer) - :scale (integer) - -### Tasks - - create_table - change_table - drop_table - add_column - change_column - rename_column - remove_column - add_index - remove_index - -### Associations - - t.references :category # kinda same as t.integer :category_id - - # Can have different types - t.references :category, polymorphic: true - -### Add/remove columns - - $ rails generate migration RemovePartNumberFromProducts part_number:string - - class RemovePartNumberFromProducts < ActiveRecord::Migration - def up - remove_column :products, :part_number - end - - def down - add_column :products, :part_number, :string - end - end - Validation ----------