You are currently browsing the tag archive for the 'MySql' tag.
Changing many columns is not so easy, because change_column forces you to enter all attributes you want (default,limit,null…) again.
So to make less errors we just alter the attributes we want to change and leave the rest alone.
Install
#Inside your migration
def self.alter_column(table,column,text)
execute("ALTER TABLE #{quote_table_name(table)} ALTER #{quote_column_name(column)} #{text}")
end
Usage
# to set the default to nil, without remembering all the other # stuff change_column needs alter_column(:users,:name,"DROP DEFAULT")
So thats very basic, but i hope it helps anyway
I just came across a serious bug/gotcha when using mysql.
Integer, default 0 -> set to NULL –> NULL and not 0
Remember
always set NOT_NULL and DEFAULT!
Example
change_columnrder_items, :shipping, :boolean, :default=>false #shipping is nil or false or true OrderItem.find(:all,:conditions=>{:shipping=>false}) => [] change_column
rder_items, :shipping, :boolean, :default=>false, :null=>false OrderItem.find(:all,:conditions=>{:shipping=>false}) => [all]
