ecto_enum icon indicating copy to clipboard operation
ecto_enum copied to clipboard

use with string-backed storage doesnt work

Open NikitaNaumenko opened this issue 4 years ago • 1 comments

when i try to use EctoEnum with string-backed storage i've got an error

== Compilation error in file lib/app/notifications/email_delivery_status_enum.ex ==
** (CompileError) lib/app/notifications/email_delivery_status_enum.ex:2: undefined function use/6
    (stdlib) erl_eval.erl:680: :erl_eval.do_apply/6
    (elixir) lib/kernel/parallel_compiler.ex:229: anonymous fn/4 in Kernel.ParallelCompiler.spawn_workers/7

my enum

defmodule HexletBasics.Notifications.EmailDeliveryStatusEnum do
  use EctoEnum, "sent", "bounce", "spam", "rejected", "unsub"
end

when i used defenum, or keywords e.g, it's ok

defmodule HexletBasics.Notifications.EmailDeliveryStatusEnum do
  use EctoEnum, sent: "sent",  bounce: "bounce", spam:  "spam", rejected: "rejected", unsub:  "unsub"
end

NikitaNaumenko avatar Sep 16 '19 11:09 NikitaNaumenko

I am having this issue too, I can verify that I am passing in strings into my changeset, but after the cast step it becomes atom.

  defenum StatusEnum, ~w(pending_payment cancelled paid refunded pending_collection fulfilled)

  def changeset(sales_order, attrs) do
    # status is string `"pending_payment"` here
    sales_order
    |> cast(attrs, [:user_id, :outlet_id, :status, :source])
    |> # status is :pending_payment here
    |> cast_assoc(:user)

edisonywh avatar Sep 19 '19 11:09 edisonywh