ruby-on-rails - 有谁知道全局范围 ActiveRecord 的方法?我希望及时获得整个数据库的快照
问题描述
在工作中,我经常需要调查之前状态的数据。例如,用户 3 天前在其应用中看到了时间敏感信息(他们最近 50 条订单记录)。此后,该信息已被新订单覆盖。为了复制该问题以进行调试,我需要在某个时间戳之前限制所有相关数据(订单、用户交互等)。
我的问题归结为:与其确定我正在查询的每个表的范围(并冒着遗漏某些东西的风险),是否有一种干净的方法来确定在此类调查期间可能查询的记录和表上的所有时间戳?
我在 Rails 5.1.6 上
解决方案
这听起来像是 ARel 的工作。ARel 使构建基于时间/系统时钟的 Scopes 变得更加容易。您可以根据需要定义任意数量的这些。
ARel:
scope :created_at_before, ->(timestamp) { where( arel_table[:created_at].gte(timestamp) }
scope :created_at_over_three_months_ago, { created_at_before(3.months.ago) }
#and so on and so on...
但我不得不问这个......
您需要“数据库的时间快照”。
备份一下?????? 数据库的备份是数据库的时间快照。在单独的计算机上恢复此备份。您甚至可以使用cron
Heroku Scheduler 或您的平台等价物自动进行这些备份。
推荐阅读
- angular - 打字稿中的 Angular 6 和 i18n
- jenkins - 如何在不推送新提交的情况下重新启动 GitHub 检查?
- html - 如果复选框的标签是超链接,是否违反 WCAG 2.0 AA?
- reactjs - 'this' 隐含类型为 'any',因为它没有类型注释。在函数上调用绑定时
- swift - Swift 4只旋转一屏UITabBarController
- javascript - 反应 onChange 不从 Div 触发
- c# - Html.EditorFor Post 后不更新
- python - 在 python 中绘制每小时时间序列
- javascript - 如何从 cognito 异步函数返回响应并将其显示在页面上?
- dart - Flutter 自定义动画对话框