gpt4 book ai didi

elixir - 如何在插入时为 Ecto 模型中的某些字段设置一些值

转载 作者:行者123 更新时间:2023-12-03 09:14:00 25 4
gpt4 key购买 nike

我在 Ecto 模型中有几个字段,我想为其插入 a) 默认值 b) 在执行插入时生成值。我怎样才能做到这一点?我应该在“changeset”中的哪个函数中执行此操作?

最佳答案

是的,此类事情通常发生在变更集函数中。如果您需要区分插入和更新时发生的情况,您可以定义多个变更集函数,并在更新或插入数据时调用适当的函数。例如:

defmodule MyApp.Schema do
#...

def insert_changeset(struct, params) do
struct
|> common_changeset(params)
|> put_change(:foo, "bar") # writing a field to the changeset
# ...
end

def update_changeset(struct, params) do
struct
|> common_changeset(params)
# ...
end

defp common_changeset(struct, params) do
struct
|> cast(params, [:foo, :bar])
# ...
end
end

如果默认值是静态的,您还可以对架构中的 field/3 宏使用 ecto 的 default: 选项 - 它相当于提供一个值对于 defstruct 声明中的字段。

关于elixir - 如何在插入时为 Ecto 模型中的某些字段设置一些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39317798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com