Ash FrameworkAF
Ash Framework5mo ago
14 replies
zimt28

Embedded Resource default value causes compilation error

I have a fairly simple embedded resource:
defmodule App.Organizations.OrganizationSettings do
  @moduledoc false

  use Ash.Resource,
    data_layer: :embedded

  alias __MODULE__.Validations

  actions do
    defaults [:read, :create, :update]
    default_accept [:vat_exempt?, :timezone]
  end

  validations do
    validate Validations.ValidateTimezone
  end

  attributes do
    uuid_primary_key :id

    attribute :vat_exempt?, :boolean, default: false, source: :has_vat_exempt, allow_nil?: false
    attribute :timezone, :string, default: "Europe/Berlin", allow_nil?: false

    timestamps()
  end
end

and a simple validation:
defmodule App.Organizations.OrganizationSettings.Validations.ValidateTimezone do
  @moduledoc false

  use Ash.Resource.Validation

  @impl true
  def validate(changeset, _opts, _context) do
    timezone = Ash.Changeset.get_attribute(changeset, :timezone)

    if Timex.Timezone.exists?(timezone) do
      :ok
    else
      {:error, field: :timezone, message: "is invalid"}
    end
  end
end
Solution
default: fn -> %{} end in this case
Was this page helpful?