Мягкое удаление записей в Ember

Я использую драгоценный камень paranoia в своем бэкэнде Rails для управления мягким удалением записей, однако вызов destroyRecord() в модели Ember приводит к тому, что он помечается как удаленный, скрывая его из коллекции во внешнем интерфейсе. При обновлении страницы запись снова появляется, поскольку она все еще существует в резервной копии, хотя и с установленной временной меткой deleted_at.

Как лучше всего справиться с этим в Ember? Я хотел бы иметь возможность вызывать deleteRecord() и не устанавливать флаг deleted, но только для этой модели.


person Adam    schedule 10.01.2018    source источник


Ответы (1)


Если ваши записи обратимо удалены, они не должны присутствовать в вашем ответе API, когда они имеют deleted_at . Если это так, то вам нужно внести некоторые изменения в свой сервер, чтобы они не передавались во внешний интерфейс.

Если по какой-то причине вы хотите, чтобы все записи передавались во внешний интерфейс, даже если они имеют дату deleted_at, вам следует реализовать вычисляемое свойство, например:

isSoftDeleted: computed.notEmpty('deleted_at')

и вы можете создать еще один, который сочетает в себе оба типа

isGone: computed.or('isSoftDelete', 'isDeleted')
person averydev    schedule 11.01.2018
comment
Спасибо за ваш ответ. Я должен был уточнить, что... У меня есть флажок, чтобы показать/скрыть удаленные записи, и я включаю удаленные записи в ответ API (через параметр include). В итоге я решил это с помощью ember-custom-actions и пользовательского действия с именем softDelete, которое вызывает запрос DELETE без пометки записи как удаленной в хранилище. Это работает хорошо. - person Adam; 11.01.2018
comment
Потрясающий! На самом деле я не был знаком с ember-custom-actions. Я собираюсь установить это в своем приложении СЕЙЧАС :) - person averydev; 12.01.2018