我有更多的菜鸟问题。当我做
之类的事情case MyRepo.insert %Post{title: "Ecto is great"} do
{:ok, struct} -> # Inserted with success
{:error, changeset} -> # Something went wrong
end
Repo如何知道数据库中的哪个表使用?
答案 0 :(得分:6)
Ecto在模块上定义__schema__
函数,该函数调用use Ecto.Schema
然后调用schema do ... end
。如果您将:source
传递给它,则会返回表名。
iex(1)> %MyApp.Post{}
%MyApp.Post{__meta__: #Ecto.Schema.Metadata<:built, "posts">,
comments: #Ecto.Association.NotLoaded<association :comments is not loaded>,
id: nil, inserted_at: nil, title: nil, updated_at: nil}
iex(2)> %MyApp.Post{}.__struct__
MyApp.Post
iex(3)> %MyApp.Post{}.__struct__.__schema__(:source)
"posts"
__schema__
接受的各种论据都记录在案here。