如何使用Postgres使用Ecto存储数组

时间:2015-10-11 13:08:46

标签: postgresql phoenix-framework ecto

我想使用Postgres使用Ecto存储一个浮点值数组。 我在凤凰框架和Elixir中使用了Ecto。

我如何为此定义我的模型和迁移?

除了搜索没有找到任何有用内容的网络外,我还没有尝试过多少 - (

我确实尝试使用如下模式定义模型:

  schema "my_model" do
    field :my_array, :array

    timestamps
  end

给出了错误"无效或未知类型:字段数组:my_array"

2 个答案:

答案 0 :(得分:53)

我在这里找到了Ecto.Schema原始类型列表中的答案:

Ecto.Schema

答案是定义这样的类型:

  schema "my_model" do
    field :my_array, {:array, :float}

    timestamps
  end

答案 1 :(得分:26)

正如您所写,使用Ecto.Schema

中的数组类型

在模型中:

schema "my_model" do
  field :my_array, {:array, inner_type}
end

@neildaemond迁移:

alter table(:my_models) do
  add :my_array, {:array, inner_type}
end

inner_type替换为其中一种有效类型,例如:string

您也可以使用map类型执行相同的操作:

schema "my_model" do
  field :my_map, {:map, inner_type}
end