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,并禁用授权“修复”它,所以它一定是CanCanCan和Paranoia之间的问题。
这是一个具有完全相同问题的线程:https ://github.com/rubysherpas/paranoia/issues/356
这是 StackOverflow 上的新问题线程:Paranoia 和 CanCanCan 之间的 Rails 5 兼容性受到损害?
如果找到解决方案,我会再次更新,谢谢。
更新2
问题已解决,解决方案可以在我上面提到的新问题线程中找到。
您可以使用YourModel.readonly.find_with_deleted(params[:id])或YourModel.readonly.with_deleted.find(params[:id])
| 归档时间: |
|
| 查看次数: |
10060 次 |
| 最近记录: |