在嵌入式架构中使用Money和Ecto?

时间:2017-10-30 19:57:16

标签: elixir phoenix-framework ecto

尝试将Money.Ecto.Type与嵌入式架构一起使用时出现此错误:

cannot load `%{"amount" => 69999, "currency" => "USD"}` as type Money.Ecto.Type for field `amount`

在文档中,它说底层字段应该是一个整数,但我将它存储在地图中。

embeds_many :price, Price do
  field :amount, Money.Ecto.Type
  field :date, Timex.Ecto.DateTime
end

我有点困惑为什么这不起作用。我是否在装载工作的某个地方错过了导入,或者仅仅是因为我使用的是嵌入式模式?

1 个答案:

答案 0 :(得分:0)

Money.Ecto.Type需要一个整数,如文档中所述。

如果您是肯定的,您需要为基础数据库字段使用自定义类型,您要么使用 Money.Ecto.Map.Type 类型,要么实现Ecto的复合输入你自己。

More info关于为不同数据库使用自定义类型。