【问题标题】:How can I fetch only fields from ecto model?如何仅从 ecto 模型中获取字段?
【发布时间】:2016-09-21 15:15:49
【问题描述】:

假设我有一个模型,就像这样:

defmodule User do
  use MyApp.Web, :model

  schema "users" do
    field :email, :string
    field :first_name, :string

    belongs_to :role, Role
    has_many :comments, Comment
  end
end

用户结构将由关联和字段表示,如下所示:

model = %User{
  __meta__: #Ecto.Schema.Metadata<:loaded, "users">,
  comments: #Ecto.Association.NotLoaded,
  email: "alex@google.com",
  first_name: "alex",
  role: #Ecto.Association.NotLoaded
}

我怎样才能得到基于这个结构的只有字段的地图?

【问题讨论】:

    标签: elixir ecto


    【解决方案1】:

    Ecto 为模型定义了a __schema__ function。因此,您可以使用此函数获取字段:

    fields = User.__schema__(:fields)
    

    然后使用Map.take/2

    Map.take(model, fields)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      • 2011-02-04
      • 2020-07-07
      • 2011-07-31
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      相关资源
      最近更新 更多