Elixir 如何在Ecto迁移中为十进制列设置默认值?
我试着做了以下几点:Elixir 如何在Ecto迁移中为十进制列设置默认值?,elixir,phoenix-framework,ecto,Elixir,Phoenix Framework,Ecto,我试着做了以下几点: add :balance, :decimal, default: 0.0 add :balance, :decimal, default: "0.0" add :balance, :decimal, default: Decimal.new("0.0") 前2个根本不起作用,因为如果我没有显式传递值,新创建的记录仍然返回nil 第三个返回此错误: **(ArgumentError)类型:Decimal的未知默认值#Decimal:默认值可以是字符串、数字、布尔值和 字符串
add :balance, :decimal, default: 0.0
add :balance, :decimal, default: "0.0"
add :balance, :decimal, default: Decimal.new("0.0")
前2个根本不起作用,因为如果我没有显式传递值,新创建的记录仍然返回nil
第三个返回此错误:
**(ArgumentError)类型:Decimal
的未知默认值#Decimal
:默认值可以是字符串、数字、布尔值和
字符串、整数列表、映射(当类型为map时)或片段(…)
我现在能想到的唯一解决办法是使用:
但是,我更喜欢在迁移本身上这样做。我该怎么做?我问了同样的问题,关于长生不老药松弛,我被告知第一个应该有效 我又检查了一遍,第一个没问题。只是
Repo.insert()
将列返回为nil
,但如果我再次检索记录,它将显示为#Decimal
,这意味着默认值不起作用
def changeset(account, attrs) do
account
|> put_change(:balance, Decimal.new("0.0"))
end