对于Rails 3,有没有像acts_as_paranoid这样的更好的版本?

时间:2011-06-15 08:00:37

标签: ruby-on-rails ruby-on-rails-3 gem soft-delete

有没有人知道一个gem同时软删除数据库中的记录(只是将它们标记为已删除而不是实际删除)和...

...当你在任何类型的查找中自动省略那些已删除的记录而不使用任何特殊的用户定义范围。例如。这一切都发生在宝石中。

干杯!

5 个答案:

答案 0 :(得分:7)

DHH很喜欢这样做的'关注',基本上只是模块混合,我喜欢这种简约的方法。

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

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

答案 1 :(得分:4)

您可能想要结帐paper_trail

https://github.com/airblade/paper_trail

答案 2 :(得分:2)

paper_trail具有许多功能并经过充分测试(已存在很长时间)。

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

https://github.com/grosser/soft_deletion

答案 3 :(得分:2)

Paranoia

来自天才ParanoiaRadar宝石就是你要找的东西。

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

它完成了您的两个请求:

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

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

  3. 无法说出关于图书馆或雷达的好消息。

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

答案 4 :(得分:0)

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