gpt4 book ai didi

ruby-on-rails - Ruby on Rails 迁移从字符串转换为十进制

转载 作者:数据小太阳 更新时间:2023-10-29 09:00:55 24 4
gpt4 key购买 nike

我已经创建了一个数据库,并且已经向数据库中输入了大约 30-40 个条目,但是出现了一个错误,当我需要它们是小数以便执行操作时,我不小心将数据库的某些列设置为字符串在他们身上。

为了更改数据库,我生成了一个包含此内容的迁移文件。

class ChangeOddsAndUnitsColumn < ActiveRecord::Migration
def change
change_column :bets, :units_placed, :decimal
change_column :bets, :odds, :decimal
end
end

但是,当我运行 rake db:migrate 时,出现以下错误

PG::DatatypeMismatch: ERROR:  column "units_placed" cannot be cast automatically to type numeric

每列中的值已经是十进制数字,但我不知道如何将它们从字符串转换为十进制类型。

最佳答案

您所做的是一个原子操作,首先删除您不会使用的列。然后创建 decimal 类型的列。最后更新表并赋值。如果您不想丢失信息,那么您应该通过转换类型的 SQL 更新过程来支持它。希望你起到了引导作用。问候。

Lo que debes hacer es una operación atómica, donde primero elimines la columna que no vas a utilizar. Luego crear la columna de tipo decimal. Por último actualizar la tabla y asignarle valores. En caso de que no quieras perder la información deberías respaldarla para luego a través de un procedimiento SQL actualicen convirtiendo los tipos. Espero que te haya servido como una orientación. Saludos.

class ChangeOddsAndUnitsColumn < ActiveRecord::Migration
def up
change_table :bets do |t|
t.decimal :units_placed, precision: 16, scale: 2
end
Bets.update_all ["units_placed = ?", 0.0]
end

def down
remove_column :bets, :units_placed
end
end

关于ruby-on-rails - Ruby on Rails 迁移从字符串转换为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35918508/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com