Есть ли лучшая версия что-то вроде acts_as_paranoid для Rails 3? - PullRequest
5 голосов
/ 15 июня 2011

Кто-нибудь знает о драгоценном камне, который как софт удаляет записи из базы данных (просто помечает их как удаленные, а не фактически удаляет), так и ...

... также когда вы используете какой-либо типfind автоматически пропускает эти удаленные записи без использования специальных пользовательских областей.Например, все это происходит в жемчужине.

Ура!

Ответы [ 5 ]

7 голосов
/ 09 ноября 2012

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

Вот версия DHH - https://gist.github.com/1014971

Вот моя исправленная версия - https://gist.github.com/4032984

4 голосов
/ 16 июня 2011

Возможно, вы захотите оформить заказ paper_trail

https://github.com/airblade/paper_trail

2 голосов
/ 11 июля 2015

Паранойя

Паранойя драгоценный камень от явно талантливого радара - это то, что вы искали.

По сути, это перезапись acts_as_paranoid (и использует многие из тех же соглашений), но она меньше, быстрее и совместима с Rails 3 и 4.

Выполняет оба ваших запроса:

  1. Автоматически устанавливает отметку времени deleted_at, когда метод destroy вызывается для объекта, класс которого включает acts_as_paranoid.

  2. Автоматически устанавливает условие для любых запросов, обеспечивающих deleted_at IS NULL, если только вы не включите with_deleted в цепочку запросов.

Не могу сказать достаточно хороших слов о библиотеке или радаре.

Бонус: его документация может быть лучшей в "деле".

2 голосов
/ 09 ноября 2012

paper_trail обладает множеством функций и хорошо протестирован (существует уже давно).

Если вам нужна только указанная функциональность, проверьте:

https://github.com/grosser/soft_deletion

0 голосов
/ 07 марта 2019

Я использую драгоценный камень Discard. Это довольно простой способ для мягкого удаления записей. https://www.rubydoc.info/gems/discard/1.0.0

...