【发布时间】:2017-02-10 03:35:10
【问题描述】:
我想在 Phoenix/Elixir 中执行一个模型。该模型基本上计算用户花费的金额的滚动总和。模型 (Receipts) 如下所示:
---------------
| ID | Amount |
---------------
| 1 | 0 |
| ...| ... |
| 5 | 4 |
---------------
ID 上有一个唯一索引。我想在表中插入一个用户(我定义了 ID),然后如果用户不存在则设置金额,否则将新金额添加到现有金额中。例如,执行:
Repo.insert(Users.changeset(%Users{}, %{ID: 1, Amount: 10})
会导致:
---------------
| ID | Amount |
---------------
| 1 | 11 |
| ...| ... |
| 5 | 4 |
---------------
并执行 Repo.insert(%Users{}, Users.changeset(%{ID: 6, Amount: 5}) 将导致:
---------------
| ID | Amount |
---------------
| 1 | 11 |
| ...| ... |
| 5 | 4 |
| 6 | 5 |
---------------
我知道我应该对:on_conflict 做点什么,但我有点迷失如何正确处理它。谁能指出我正确的方式?
【问题讨论】:
标签: elixir phoenix-framework ecto