Ответ 1
Я нашел ответ в списке примитивных типов для Ecto.Schema здесь:
Ответ заключается в том, чтобы определить тип, подобный этому:
schema "my_model" do
field :my_array, {:array, :float}
timestamps
end
Я хотел бы сохранить массив значений с плавающей запятой, используя Ecto, используя Postgres. Я использую Ecto с Phoenix Framework и Elixir.
Как я могу определить мою модель и миграцию для этого?
Я не много пробовал, кроме поиска в Интернете, который не нашел ничего полезного: - (
Я попытался определить модель с такой схемой:
schema "my_model" do
field :my_array, :array
timestamps
end
который дал ошибку "недопустимый или неизвестный тип: array for field: my_array"
Я нашел ответ в списке примитивных типов для Ecto.Schema здесь:
Ответ заключается в том, чтобы определить тип, подобный этому:
schema "my_model" do
field :my_array, {:array, :float}
timestamps
end
Как вы написали, используйте тип массива из 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