有没有一个更好的版本,比如Rails 3的acts_as_paranoid



有人知道gem吗?它既从数据库中软删除记录(只是将它们标记为已删除,而不是实际删除),又。。。

此外,什么时候任何类型的find都会自动省略那些被丢弃的记录,而不使用任何特殊的用户定义范围。这一切都发生在宝石里。

干杯!

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

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

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

您可能想要签出paper_track

https://github.com/airblade/paper_trail

偏执狂

来自才华横溢的雷达的偏执狂宝石正是你想要的。

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

它完成了您的两个请求:

  1. 当对类包含acts_as_paranoid的对象调用destroy方法时,自动设置deleted_at时间戳。

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

关于图书馆或雷达的好事说得太多了。

奖金:他的文档可能是"业务"中最好的

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

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

https://github.com/grosser/soft_deletion

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

最新更新