如何使用PostgreSQL在Ecto中使用点列类型

时间:2017-03-27 20:24:40

标签: postgresql elixir ecto

我可以看到Postgrex lib支持postgreSQL的point类型,但我无法弄清楚如何在模型中使用它。我可以在迁移中为列指定point类型,但是当我在模型中指定它时,如下所示:

schema "something" do
  field :position, :point
end

我得到** (ArgumentError) invalid or unknown type :point for field :position。我应该做些什么来使其发挥作用?

2 个答案:

答案 0 :(得分:3)

Ecto不包含PostgreSQL中Ecto.Type数据类型的任何point实现模块。您可以为其定义自己的Ecto.Type行为模块,也可以使用geo这样的库,其中包含Geo.Point implements the Ecto.Type behavior

使用geo,您的架构看起来像:

schema "something" do
  field :position, Geo.Point
end

答案 1 :(得分:0)

geo库已将所有与Ecto相关的代码移到单独的库(see related pull request here)中。

要使用PostgreSQL Ecto.Type数据类型的point实现,请使用geo_postgis库。