Rails 3 Migration Alter Float Length/Decimal

Kyl*_*cot 4 ruby-on-rails ruby-on-rails-3

我怎么会去改变decimalslength一个浮动列的属性在我的Rails 3迁移文件.我试过以下没有成功:

class IncreaseLatitudeLongitudeFieldLengths < ActiveRecord::Migration
  def self.up

    change_column :skateparks, :latitude, :float, {:length => 15, :decimals => 12}
    change_column :skateparks, :longitude, :float, {:length => 15, :decimals => 12}

  end

  def self.down

    change_column :skateparks, :latitude, :float, {:length => 0, :decimals => 0}
    change_column :skateparks, :longitude, :float, {:length => 0, :decimals => 0}

  end
end
Run Code Online (Sandbox Code Playgroud)

Mar*_*rth 8

个人经验最有效(因为MySQL/sqlite有时会拒绝对列的更改):创建新列,复制数据,删除旧列,重命名新列.

# 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
Run Code Online (Sandbox Code Playgroud)

编辑:第二次看起来:float, { :length => 15, :decimals => 12 }似乎是错的.我猜你的意思是::decimal, :precision => 15, :scale => 12