我正在努力理解将在以下场景中使用的工作流程:
用户创建一个模型,我们称之为产品。我们向他们展示了一个要填写的表单。由于验证以外的某些原因(超时、访问被拒绝等)而导致的保存错误在 Ember 中,这会将模型置于错误状态。从 UI 的角度来看,我要做的就是在屏幕上显示一条消息(简单)并允许用户再试一次(显然不是那么容易)。
我已经多次看到它不重用事务。我明白其中的逻辑。在新产品的情况下,我简单地创建另一个新产品,合并来自原始产品的数据(属性、关系)并用新产品替换我的控制器的内容。这并不难,而且看起来效果很好,尽管可能(希望)有更好的方法。
但是,当我编辑产品时,我遇到了一个严重的问题,上述解决方案不起作用。产品模型现在处于错误状态,我找不到任何方法来获取该产品的副本,该副本也不处于相同状态。
我无法弄清楚的是,一旦该模型达到错误状态,我可以用它做什么。我尝试了以下方法:
回滚:这不起作用。您不能回滚处于错误状态的事务。
重新加载:同上。不允许在错误状态下重新加载记录。
获取记录的新副本:所以我尝试使用与现有记录相同的 ID 的 App.Product.find(id)。它只是给了我一份现有记录的副本,处于错误状态。
我希望我在这里遗漏了一些相当基本的东西。是否可以将记录很好地从错误状态(或无效状态)中推出?
如果有一种简单的方法可以改变这些模型的状态,我们是否还应该创建一个新事务来进一步尝试提交?