Rails - 在 Heroku 的浮点列中插入小数时出错
Rails - Error while inserting decimal in a float column in Heroku
我有一个 table 正在开发中,是通过此迁移创建的:
class CreateMateriales < ActiveRecord::Migration
def change
create_table :materiales do |t|
t.belongs_to :refaccion, index: true
t.belongs_to :solmate, index: true
t.integer :partida
t.integer :pedida
t.integer :surtida
t.timestamps null: false
end
end
end
但后来我意识到我需要在 :pedida
和 :surtida
上存储小数,所以我做了这个迁移:
class ChangeTypesPedidaSurtidaMateriales < ActiveRecord::Migration
def self.up
change_column :materiales, :pedida, :float
change_column :materiales, :surtida, :float
end
def self.down
change_column :materiales, :pedida, :integer
change_column :materiales, :surtida, :integer
end
end
它在开发中发挥了作用,但当我将它推送到 Heroku 时,它只是将它们存储为整数。我跟踪了数据并注意到它以小数形式发送并且到达时很好但是在 INSERT_INTO
命令上它被四舍五入了:
我也在 Heroku 的控制台中进行了测试,它确实正确地保存了它。
知道为什么它会变圆吗?我正在异步发送它。我在 Heroku 的开发中使用 sqlite3,在生产中使用 Postgresql。
已推送到生产环境,运行 迁移一开始不起作用,但一段时间后(大约 10 分钟),更改现在可见。我不知道这是否是 Heroku 上的错误。
我有一个 table 正在开发中,是通过此迁移创建的:
class CreateMateriales < ActiveRecord::Migration
def change
create_table :materiales do |t|
t.belongs_to :refaccion, index: true
t.belongs_to :solmate, index: true
t.integer :partida
t.integer :pedida
t.integer :surtida
t.timestamps null: false
end
end
end
但后来我意识到我需要在 :pedida
和 :surtida
上存储小数,所以我做了这个迁移:
class ChangeTypesPedidaSurtidaMateriales < ActiveRecord::Migration
def self.up
change_column :materiales, :pedida, :float
change_column :materiales, :surtida, :float
end
def self.down
change_column :materiales, :pedida, :integer
change_column :materiales, :surtida, :integer
end
end
它在开发中发挥了作用,但当我将它推送到 Heroku 时,它只是将它们存储为整数。我跟踪了数据并注意到它以小数形式发送并且到达时很好但是在 INSERT_INTO
命令上它被四舍五入了:
我也在 Heroku 的控制台中进行了测试,它确实正确地保存了它。
知道为什么它会变圆吗?我正在异步发送它。我在 Heroku 的开发中使用 sqlite3,在生产中使用 Postgresql。
已推送到生产环境,运行 迁移一开始不起作用,但一段时间后(大约 10 分钟),更改现在可见。我不知道这是否是 Heroku 上的错误。