gpt4 book ai didi

elixir - Phoenix 丹药的变更集是什么

转载 作者:行者123 更新时间:2023-12-03 08:02:19 24 4
gpt4 key购买 nike

我在理解 changeset 时遇到问题在模型中。它能做什么?我们可以在一个模型中拥有多个变更集吗?例如一个用于创建,另一个用于更新。

有人可以以简单的方式详细说明,以便帮助其他人来到 Phoenix 。

最佳答案

来自 documentation :

Changesets allow filtering, casting, validation and definition of constraints when manipulating models..

There is an example of working with changesets in the introductory documentation in the Ecto module. The functions change/2 and cast/4 are the usual entry points for creating changesets, while the remaining functions are useful for manipulating them.


变更集用于创建和修改模型。变更集实际上是一个存储一组变更(以及验证规则)的结构。您将变更集传递给您的 Ecto Repo 以保留变更(如果它们有效)。
在更新时将模型传递给 Repo 时,Ecto 的当前主分支删除了隐式转换,这意味着使用变更集是更新模型的唯一方法。
从变更日志:

Given a model to Repo.update/2 has been deprecated as it is inneffective and error prone since changes cannot be tracked


就每个模型有多个变更集而言,答案当然是肯定的。变更集只是一个函数。你实际上甚至没有 需要将变更集功能放在您的模型中,但这是放置它们的常见位置。
如果您在注册用户时需要比更新用户更多的字段,那么您可以定义 register_changeset和一个 create_changeset具有不同的必填字段。

关于elixir - Phoenix 丹药的变更集是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33186327/

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