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]