Я пытаюсь понять рабочий процесс, который будет использоваться в следующем сценарии:
Пользователь создает модель, позвонив ей в продукт. Мы представляем их с заполненной формой. Ошибки сохранения по какой-либо причине, кроме валидации (тайм-аут, доступ запрещен и т.д.). В Ember это приводит к тому, что модель переходит в состояние ошибки. С точки зрения пользовательского интерфейса все, что я хочу сделать, это поместить сообщение на экран (легко) и позволить пользователю попробовать еще раз (видимо, не так просто).
Я видел, как он много раз писал, чтобы не использовать транзакцию повторно. Я понимаю логику этого. В случае с новым продуктом я просто создаю еще один новый продукт, объединяя данные из исходного продукта (атрибуты, отношения) и заменяю содержимое моего контроллера новым продуктом. Это было непросто и, похоже, работает хорошо, хотя может (надеюсь) лучший способ.
Однако, когда я редактирую Продукт, у меня возникла серьезная проблема, и вышеупомянутое решение не работает. Модель продукта теперь находится в состоянии ошибки, и я не могу найти способ получить копию этого Продукта, которая также не находится в том же состоянии.
Что я не могу понять, это то, что я могу сделать с этой моделью, когда она попадает в состояние ошибки. Я пробовал следующее:
Откат: Это не работает. Вы не можете отменить транзакцию в состоянии ошибки.
Обновить: То же, что и выше. Не разрешено перезагружать запись в состоянии ошибки.
Возьмите новую копию записи:. Поэтому я пытаюсь использовать App.Product.find(id) с тем же идентификатором, что и существующая запись. Он просто дает мне копию существующей записи в состоянии ошибки.
Я надеюсь, что мне не хватает чего-то достаточно простого здесь. Можно ли отличить запись из состояния ошибки (или недействительного состояния)?
Если есть простой способ изменить состояние этих моделей, должна ли мы по-прежнему создавать новую транзакцию для дальнейших попыток совершить?