假设我有一个模型,就像那样:
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
}
如何基于此结构仅使用字段获取地图?
答案 0 :(得分:10)
Ecto为模型定义__schema__
函数。因此,您可以使用此函数获取字段:
fields = User.__schema__(:fields)
然后使用Map.take/2
Map.take(model, fields)