51

我想使用 Postgres 使用 Ecto 存储浮点值数组。我将 Ecto 与 Phoenix 框架和 Elixir 一起使用。

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

我没有尝试太多,除了搜索网络,没有发现任何有用的东西:-(

我确实尝试使用这样的模式定义模型:

  schema "my_model" do
    field :my_array, :array

    timestamps
  end

这给出了一个错误“无效或未知类型:字段数组:my_array”

4

2 回答 2

72

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

外图式

答案是这样定义类型:

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

    timestamps
  end
于 2015-10-11T13:23:55.380 回答
44

正如 Josh 所写,使用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
于 2016-12-16T11:26:45.150 回答