5

有谁知道一个 gem 可以从数据库中软删除记录(只是将它们标记为已删除,而不是实际删除)和...

...此外,您何时会在不使用任何特殊用户定义范围的情况下自动忽略那些被丢弃的记录。例如,这一切都发生在 gem 中。

干杯!

4

5 回答 5

7

DHH 很喜欢用“关注点”来做这件事,这些“关注点”基本上只是模块混合,我喜欢这种极简主义的方法。

这是 DHH 的版本 - https://gist.github.com/1014971

这是我的错误修正版本 - https://gist.github.com/4032984

于 2012-11-08T23:30:43.110 回答
4

您可能想结帐 paper_trail

https://github.com/airblade/paper_trail

于 2011-06-16T17:41:03.383 回答
2

paper_trail 有很多功能并且经过了很好的测试(已经存在了很长时间)。

如果您只需要指定的功能,请查看:

https://github.com/grosser/soft_deletion

于 2012-11-08T21:49:30.343 回答
2

偏执狂

来自才华横溢的Radar偏执狂宝石正是您所寻找的。

它本质上是对acts_as_paranoid的重写(并使用许多相同的约定),但更小、更快并且与Rails 3 和4 兼容。

它完成了您的两个请求:

  1. 在类包含 的对象上调用方法时自动设置deleted_at时间戳。destroyacts_as_paranoid

  2. 自动为确保 的任何查询设置条件deleted_at IS NULL,除非您包含with_deleted在查询链中。

无法对图书馆或雷达说足够多的好话。

奖励:他的文档可能是“业务”中最好的。

于 2015-07-11T20:14:08.410 回答
0

我使用丢弃宝石。这是软删除记录的一种非常简单的方法。 https://www.rubydoc.info/gems/discard/1.0.0

于 2019-03-07T13:11:57.733 回答