Je voudrais stocker un tableau de valeurs à virgule flottante avec Ecto en utilisant Postgres. J'utilise Ecto avec le Phoenix Framework et Elixir.
Comment définirais-je mon modèle et ma migration pour cela?
Je n'ai pas beaucoup essayé, sauf en cherchant sur le web, qui n'a rien trouvé d'utile :-(
J'ai essayé de définir un modèle avec un schéma comme celui-ci:
schema "my_model" do
field :my_array, :array
timestamps
end
qui a donné une erreur "type invalide ou inconnu: tableau pour le champ: my_array"
J'ai trouvé la réponse dans la liste des types primitifs pour Ecto.Schema ici:
La réponse est de définir le type comme ceci:
schema "my_model" do
field :my_array, {:array, :float}
timestamps
end
Comme vous l'avez écrit, utilisez le type de tableau de Ecto.Schema
Dans le modèle:
schema "my_model" do
field :my_array, {:array, inner_type}
end
@neildaemond Migration:
alter table(:my_models) do
add :my_array, {:array, inner_type}
end
Remplacer inner_type
avec l'un des types valides, tels que :string
.
Vous pouvez également faire la même chose avec un type map
:
schema "my_model" do
field :my_map, {:map, inner_type}
end