Как я могу предотвратить удаление объекта по умолчанию?

В настоящее время я создаю прототип приложения, используя последнюю бета-версию Rails 4.2.

Для нескольких частей системы мне нужно разрешить пользователю выбирать элемент «по умолчанию» в списке.

До сих пор я реализовал это как поле «по умолчанию» в моделях и проверку уникальности, чтобы гарантировать, что разрешено только одно «по умолчанию».

Одно из моих бизнес-правил — предотвратить удаление объекта «по умолчанию».

Я мог бы использовать обратный вызов before_destroy для этого — и это прекрасно работает — но я также использую гем paranoia из https://github.com/radar/paranoia, чтобы дать мне возможность мягкого удаления. Это отменяет уничтожение моделей с помощью вызова обновления (вместо этого устанавливается поле «deleted_at»). Использование вызова before_update не дает ожидаемого результата, так как полеDeleted_at не установлено достаточно рано.

Если драгоценный камень паранойи создаст мне проблемы, я буду рад полностью удалить это требование. Мягкое удаление — это скорее приятно, чем необходимая функция на данном этапе.

Есть ли у кого-нибудь предложения о том, как я могу реализовать эту логику и, что не менее важно, проверить, работает ли она так, как ожидалось?


person Steve Hill    schedule 21.11.2014    source источник


Ответы (1)


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

person meagar    schedule 21.11.2014
comment
Звучит полезно @meagar - не могли бы вы привести пример кода для этого? - person Steve Hill; 22.11.2014