轨道模型的影子表

时间:2013-02-19 12:49:30

标签: ruby-on-rails audit-tables

我在我的rails应用程序中有Follow模型,当用户关注某些内容时 - 创建记录,取消关注 - 记录已删除。

我需要在单独的表中跟踪此更改(仅插入和删除)。

它将用于使用纯SQL构建一些报告 - 这就是为什么表应该具有类似的结构,也就是“阴影”

我不希望使用附加逻辑的polute原始模型 - 有一些解决方案,但它们不够灵活:

https://github.com/rubiety/has_draft - 我无法选择具体操作

https://github.com/bglusman/ruby-shadow-tables - 仅限raw和mysql

对于这种情况,有人知道一些好的解决方案吗?

3 个答案:

答案 0 :(得分:0)

你可以再创建一个表shadow_follows并使用一个回调方法after_create和before_destroy将目标记录复制到新表中。

答案 1 :(得分:0)

我没有为这种情况找到任何合适的宝石,并决定用rails观察器实现它。没什么特别的..只是最简单的解决方案。

答案 2 :(得分:0)

这是相当陈旧的,但是如果其他人想要做这样的事情,我和朋友做了一个脚本来在带有数据库触发器的rails中设置影子表... https://github.com/bglusman/ruby-shadow-tables

它有点苛刻,绝对会受益于被抽象成宝石,也许是数据库中立的解决方案。