Паранойя драгоценный камень от явно талантливого радара - это то, что вы искали.
По сути, это перезапись acts_as_paranoid (и использует многие из тех же соглашений), но она меньше, быстрее и совместима с Rails 3 и 4.
Выполняет оба ваших запроса:
Автоматически устанавливает отметку времени deleted_at
, когда метод destroy
вызывается для объекта, класс которого включает acts_as_paranoid
.
Автоматически устанавливает условие для любых запросов, обеспечивающих deleted_at IS NULL
, если только вы не включите with_deleted
в цепочку запросов.
Не могу сказать достаточно хороших слов о библиотеке или радаре.
Бонус: его документация может быть лучшей в "деле".