Виртуальные модели в экто

Есть ли способ определить виртуальную модель в экто. Которые не имеют migration file а также don't persist in the data base, Я не нашел никакой документации, связанной с этим в Ecto Docs. Мне нужно это, чтобы проверить некоторые функции в iex. Для тестирования с моделями отдельно от остальной части приложения.

я нашел embedded schema которые содержат поля, которые не сохраняются в базе данных, но не имеют отношения к моделям.

Любая помощь будет высоко ценится.

1 ответ

Решение

Встроенная схема просто отлично.

defmodule Test.Model do
  @moduledoc ~S"""
  The dummy test model that is not stored in the database.
  """
  use Ecto.Schema
  import Ecto.Changeset

  @type t :: Ecto.Schema.t

  @fields ~w|foo bar baz|a
  @primary_key false

  embedded_schema do
    field :foo, :string
    field :bar, :integer
    field :baz, :float
  end

  def new(data) when is_map(data) do
    %__MODULE__{}
    |> cast(data, @fields)
    |> validate_required(~w|foo|a)
    |> apply_changes()
  end
end

После определения он может использоваться как обычная схема.

Другие вопросы по тегам