Personal experience that works best (since MySQL / sqlite sometimes discards changes to columns): Create a new column, copy data, delete the old column, rename the new column.
# Example for latitude add_column :skateparks, :latitude2, :decimal, :precision => 15, :scale => 12 execute "UPDATE skateparks SET latitude2 = latitude" remove_column :skateparks, :latitude rename_column :skateparks, :latitude2, :latitude
EDIT: In a second glance :float, { :length => 15, :decimals => 12 } seems wrong. I assume you meant:: :decimal, :precision => 15, :scale => 12 ?
source share