这似乎已经被问过了:rails decimal precision and scale
但是,在为:precision
或:scale
运行change_column
迁移时,它们实际上并不影响模式或数据库,但是db:migrate
运行时没有错误。
我的迁移文件如下所示:
class ChangePrecisionAndScaleOfPaybackPeriodInTags < ActiveRecord::Migration
def self.up
change_column :tags, :payback_period, :decimal, { :scale => 3, :precision => 10 }
end
def self.down
change_column :tags, :payback_period, :decimal
end
end
但是我的模式(和数据)仍然是:
t.decimal "payback_period"
其他人也有这个问题吗?
谢谢,
乔希
发布于 2011-04-18 10:01:52
有一个相关(但不是相同)的问题。我只是更改了scale,所以在更改:scale时,您需要使用完整的行:
change_column :something, :weight, :decimal, :precision => 10, :scale => 2
省略:decimal (已经是)和:precision (已经是10)将导致迁移失败。
发布于 2010-03-16 05:18:16
删除并重新生成db\schema.rb
文件。
rake db:schema:dump
发布于 2010-03-17 06:00:25
一个hack,但它应该带你去你需要去的地方:
class ChangePrecisionAndScaleOfPaybackPeriodInTags < ActiveRecord::Migration
def self.up
execute "ALTER TABLE tags CHANGE payback_period DECIMAL(3,10)"
end
def self.down
change_column :tags, :payback_period, :decimal
end
end
https://stackoverflow.com/questions/2450494
复制相似问题