代码之家  ›  专栏  ›  技术社区  ›  script

埃科的虚拟模型

  •  3
  • script  · 技术社区  · 7 年前

    有没有一种方法可以在Eco中定义虚拟模型?但没有 migration file don't persist in the data base . 我在埃科医生那里没有找到任何相关的文件。我需要这个来测试IEX中的一些函数。使用与应用程序其他部分分离的模型进行测试。

    我找到了 embedded schema 其中包含的字段不存在于数据库中,但与模型无关。

    任何帮助都将不胜感激。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Aleksei Matiushkin    7 年前

    嵌入的模式很好。

    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
    

    一旦定义好,它就可以用作普通模式。