我想使用 Postgres 使用 Ecto 存储浮点值数组。我将 Ecto 与 Phoenix 框架和 Elixir 一起使用。
我将如何为此定义我的模型和迁移?
我没有尝试太多,除了搜索网络,没有发现任何有用的东西:-(
我确实尝试使用这样的模式定义模型:
schema "my_model" do
field :my_array, :array
timestamps
end
这给出了一个错误“无效或未知类型:字段数组:my_array”
我想使用 Postgres 使用 Ecto 存储浮点值数组。我将 Ecto 与 Phoenix 框架和 Elixir 一起使用。
我将如何为此定义我的模型和迁移?
我没有尝试太多,除了搜索网络,没有发现任何有用的东西:-(
我确实尝试使用这样的模式定义模型:
schema "my_model" do
field :my_array, :array
timestamps
end
这给出了一个错误“无效或未知类型:字段数组:my_array”
我在 Ecto.Schema 的原始类型列表中找到了答案:
答案是这样定义类型:
schema "my_model" do
field :my_array, {:array, :float}
timestamps
end
正如 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