Rails 5 Paranoia - 如何“显示”已删除的记录?

Fil*_*aat 1 ruby-on-rails ruby-paranoia

软删除记录后,我无法在show控制器上的操作上调用它,因为它会查找与记录匹配的记录ID WHERE deleted_at IS NULLL,考虑到宝石的用途,这是正确的,但我仍然希望能够在应用程序内以某种“只读”状态访问它,以便允许用户查看存档并可能恢复它。

如何解决删除范围以便我可以再次访问该对象?

更新1

根据@slowjack2k的建议,我可以使用以下查询访问软删除的记录:

 @area = Area.only_deleted.find(params[:id])
Run Code Online (Sandbox Code Playgroud)

后来由于CanCanCan 的原因 load_and_authorize_resource出现了一个新问题:它尝试调用

 @area = Area.find(params[:id])
Run Code Online (Sandbox Code Playgroud)

忽略only_deleted过滤器,导致错误,因为仅在deleted_at不为空(未删除)的情况下找到选定的id,并禁用授权“修复”它,所以它一定是CanCanCanParanoia之间的问题。

这是一个具有完全相同问题的线程:https ://github.com/rubysherpas/paranoia/issues/356

这是 StackOverflow 上的新问题线程:Paranoia 和 CanCanCan 之间的 Rails 5 兼容性受到损害?

如果找到解决方案,我会再次更新,谢谢。

更新2

问题已解决,解决方案可以在我上面提到的新问题线程中找到。

slo*_*k2k 7

您可以使用YourModel.readonly.find_with_deleted(params[:id])YourModel.readonly.with_deleted.find(params[:id])