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_column :order_items, :shipping, :boolean, :default=>false
#shipping is nil or false or true
OrderItem.find(:all,:conditions=>{:shipping=>false}) => []
change_column :order_items, :shipping, :boolean, :default=>false, :null=>false
OrderItem.find(:all,:conditions=>{:shipping=>false}) => [all]