Gro*_*ery 6 ecto phoenix-framework
有没有办法确定结构是否持久?我开始为Ecto挖源,insert_or_update但运气不好,因为它碰到了一些私人方法。我想完成这样的事情:
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:whatever]
|> do_a_thing_on_unsaved_struct
end
defp do_a_thing_on_unsaved_struct(struct) do
case ARE_YOU_PERSISTED?(struct) do
:yes -> struct
:no -> do_things(struct)
end
end
Run Code Online (Sandbox Code Playgroud)
有可能吗,或者我正在做一些愚蠢的事情?
您可以检查.__meta__.statestruct的。如果是新数据库(不持久),它将是:built,如果是从数据库(持久化)加载的,则它将是:loaded:
iex(1)> Ecto.get_meta(%Post{}, :state)
:built
iex(2)> Ecto.get_meta(Repo.get!(Post, 1), :state)
:loaded
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
617 次 |
| 最近记录: |