ImageUploader.Type

Hey guys im new to phoenix and Elixir. Can the “ImageUploader.Type” datatype be declared in a way such that it can store multiple values so that it? and how do you declare it in your schema ? What i have so far is:

field :image, Reports.ImageUploader.Type
def changeset(issue__logger, attrs) do
|> cast_attachments(attrs, [:image])
|> cast_attachments(attrs, [:image])

end

then in my template the
currently with that piece of code i can only cast one image at a time even if i have selected multiple images. Where am i missing it?

I’m assuming you’re using waffle, in the future you should specify what libraries your question references.

You cannot do this as far as I know, what you’d want to do instead is have a table that holds your image, and then have a many_to_many or has_many: :through relationship from your schema to that new schema. You’d then create a new image schema for each image you’ve uploaded.

Using waffle. I store many images in one jsonb field using embeds_many

In the migration you will need
add :medias, {:array, :map}, default: []

Then my I have my schema article who holds many medias.

defmodule Schema.Article do
  schema "articles" do
    embeds_many :medias, Media
  end

  def changeset(article, attrs) do
    article
    |> cast(attrs, (other fields ...))
    |> cast_embed(:medias, with: &Schema.Media.changeset/2)
 
end

defmodule Schema.Media do
  use Waffle.Ecto.Schema
  alias Uploaders.Image

  @primary_key {:id, :binary_id, autogenerate: true}
  embedded_schema do
    field :src, Image.Type
    field :alt, :string
  end

  def changeset(media, attrs) do
    media
    |> cast(attrs, ~w(alt)a)
    |> cast_attachments(attrs, ~w(src)a)
  end
end