I would like to store an array of floating point values with Ecto using Postgres. I'm using Ecto with the Phoenix Framework and Elixir.
How would I define my model and migration for this?
I haven't tried much, except searching the web, which didn't find anything useful :-(
I did try defining a model with a schema like this:
schema "my_model" do field :my_array, :array timestamps end
which gave an error "invalid or unknown type :array for field :my_array"
I found the answer in the list of primitive types for Ecto.Schema here:
Ecto.Schema
The answer is to define the type like this:
schema "my_model" do field :my_array, {:array, :float} timestamps end
As Josh wrote use the array type from Ecto.Schema
In the model:
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
Replace inner_type
with one of the valid types, such as :string
.
You can also do the same thing with a map
type:
schema "my_model" do field :my_map, {:map, inner_type} end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With