首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails:无法在迁移中使用change_column添加:precision或:scale选项?

Rails:无法在迁移中使用change_column添加:precision或:scale选项?
EN

Stack Overflow用户
提问于 2010-03-16 05:07:07
回答 3查看 14.4K关注 0票数 18

这似乎已经被问过了:rails decimal precision and scale

但是,在为:precision:scale运行change_column迁移时,它们实际上并不影响模式或数据库,但是db:migrate运行时没有错误。

我的迁移文件如下所示:

代码语言:javascript
复制
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

但是我的模式(和数据)仍然是:

代码语言:javascript
复制
t.decimal  "payback_period"

其他人也有这个问题吗?

谢谢,

乔希

EN

回答 3

Stack Overflow用户

发布于 2011-04-18 10:01:52

有一个相关(但不是相同)的问题。我只是更改了scale,所以在更改:scale时,您需要使用完整的行:

代码语言:javascript
复制
change_column :something, :weight, :decimal, :precision => 10, :scale => 2

省略:decimal (已经是)和:precision (已经是10)将导致迁移失败。

票数 36
EN

Stack Overflow用户

发布于 2010-03-16 05:18:16

删除并重新生成db\schema.rb文件。

代码语言:javascript
复制
rake db:schema:dump
票数 1
EN

Stack Overflow用户

发布于 2010-03-17 06:00:25

一个hack,但它应该带你去你需要去的地方:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2450494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档