如何在phx.gen.schema生成的Ecto迁移中设置decimal字段精度
Ecto迁移配置decimal字段精度的方法
方法1:生成迁移文件后手动修改
运行mix phx.gen.schema命令后,打开自动生成的迁移文件(位于priv/repo/migrations/目录下),找到price字段的定义行,默认生成的内容为:add :price, :decimal
修改为如下内容即可指定精度为decimal(20,10):add :price, :decimal, precision: 20, scale: 10
其中precision代表数字总位数,scale代表小数部分的位数,完全匹配你需要的decimal(20,10)配置。方法2:生成schema命令中直接指定精度
你可以在执行生成命令时直接指定decimal的精度参数,无需后续手动修改,完整命令如下:$ mix phx.gen.schema Coin coins ticker:string:unique name:string price:decimal:{20,10}
用这个命令生成的迁移文件会自动带上precision和scale配置,符合你的需求。补充:若已执行过旧迁移需要修改字段精度
如果之前已经用默认配置跑过迁移创建了表,需要新建一个迁移文件,使用modify方法修改字段:alter table(:coins) do modify :price, :decimal, precision: 20, scale: 10 end执行新迁移后即可完成字段精度的更新。
内容的提问来源于stack exchange,提问作者Daniel Cukier
相关产品推荐
相关产品推荐

