Its all about Ruby On Rails
migration
Generating association while generating model
Dec 14th
May be you guys are already aware of, but in Rails 2.2 we can specify belongs_to association while generating model. So if we issue:
script/generate model Post title:string author:belongs_to
We will get a Post model like:
class Post < ActiveRecord::Base belongs_to :author end
Also it will automatically add the foreign key column in the migration.
class CreatePosts < ActiveRecord::Migration
def self.up
create_table :posts do |t|
t.string :title
t.belongs_to :author
t.timestamps
end
end
def self.down
drop_table :posts
end
end
Nothing much but saves some keystrokes.
Migration: Adding/Removing columns are now much easier
Jan 23rd
You may have noticed by now, that in Rails 2.0 changeset 7422, you can specify columns you want to add/remove in your migration by passing attribute:type pairs to the migration generator.
For example, lets assume that we need to add a column ‘role’ in users table(User model). In this case generate a migration like:
script/generate migration AddRoleToUser role:string
Output:
class AddRoleToUser < ActiveRecord::Migration
def self.up
add_column :users, :role, :string
end
def self.down
remove_column :users, :role
end
end
Here AddRoleToUser plays the main role. ‘Add’ specifies the we want to add column(s) and ‘User’ separated by ‘To’ specifies the table.
Similarly, if we need to remove a column ‘role’ :
script/generate migration RemoveRoleFromUser role:string
Output:
class RemoveRoleFromUser < ActiveRecord::Migration
def self.up
remove_column :users, :role
end
def self.down
add_column :users, :role, :string
end
end
Here RemoveRoleFromUser plays the main role. ‘Remove’ specifies the we want to remove column(s) and ‘User’ separated by ‘From’ specifies the table.
Isn’t it cool?