分别跟踪新记录和更新记录的计数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分别跟踪新记录和更新记录的计数相关的知识,希望对你有一定的参考价值。

目前正在开展一个项目,任何管理员都可以将xlsx产品表导入活动记录。我已经开发了它,以便xlsx解析器将每个独特的产品行交给一个作业,该作业可以更新现有产品或根据给定的属性创建新产品。

我想跟踪每个导入的表格更新和创建的产品数量,添加的资产等,以显示在管理面板中。

我现在使用的方法只是创建具有相关产品ID的事件,该事件响应save记录条件,然后在导入完成后计数并显示。

if product.save
  product.events.new(payload: 'save')
end

这种技术的问题在于我无法区分产品是新产品还是已经更新。

是否有更好的技术更适合实现计数产品的保存,同时区分更新或新的?

TDLR;从Excel工作表将产品导入活动记录(每个产品1个作业)。每次导入分别保留新记录和更新记录的更好实践/技术是什么?

答案

你有几个选择:

根据我的评论,一个简单的选项就是在保存记录后检查created_atupdated_at列。如果他们是平等的,那么这是一个新的记录,如果没有,这意味着记录已经存在并被更新。你会有以下几点:

if product.created_at == product.updated_at
   new_product_count += 1
else
  updated_product_count += 1
end

但是,可能有更好的方法来做到这一点。仅作为示例:如果我理解正确,您可以通过创建新的“保存”事件来跟踪已保存产品的数量。你可以改为两种类型的事件:createdupdated。 (这将带来额外的好处,允许您计算产品自创建以来已更新的次数)

另一答案

我不知道这是否可以帮助你,但在这些情况下我使用persisted?方法。

person = Person.new(id: 1, name: 'bob')
person.persisted? # => false

以上是关于分别跟踪新记录和更新记录的计数的主要内容,如果未能解决你的问题,请参考以下文章

SQL 跟踪最新记录和更新

Access 2010 数据库中的审计跟踪

在 asp.net core 中插入/更新记录时出错

内存管理笔记

在 postgresql 中跟踪修订

SecurityError:replaceState 无法将历史记录更新为在路径、查询或片段以外的组件中不同的 URL