Виртуальные модели в экто
Есть ли способ определить виртуальную модель в экто. Которые не имеют 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
После определения он может использоваться как обычная схема.