分别跟踪新记录和更新记录的计数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分别跟踪新记录和更新记录的计数相关的知识,希望对你有一定的参考价值。
目前正在开展一个项目,任何管理员都可以将xlsx产品表导入活动记录。我已经开发了它,以便xlsx解析器将每个独特的产品行交给一个作业,该作业可以更新现有产品或根据给定的属性创建新产品。
我想跟踪每个导入的表格更新和创建的产品数量,添加的资产等,以显示在管理面板中。
我现在使用的方法只是创建具有相关产品ID的事件,该事件响应save
记录条件,然后在导入完成后计数并显示。
if product.save
product.events.new(payload: 'save')
end
这种技术的问题在于我无法区分产品是新产品还是已经更新。
是否有更好的技术更适合实现计数产品的保存,同时区分更新或新的?
TDLR;从Excel工作表将产品导入活动记录(每个产品1个作业)。每次导入分别保留新记录和更新记录的更好实践/技术是什么?
答案
你有几个选择:
根据我的评论,一个简单的选项就是在保存记录后检查created_at
和updated_at
列。如果他们是平等的,那么这是一个新的记录,如果没有,这意味着记录已经存在并被更新。你会有以下几点:
if product.created_at == product.updated_at
new_product_count += 1
else
updated_product_count += 1
end
但是,可能有更好的方法来做到这一点。仅作为示例:如果我理解正确,您可以通过创建新的“保存”事件来跟踪已保存产品的数量。你可以改为两种类型的事件:created
和updated
。 (这将带来额外的好处,允许您计算产品自创建以来已更新的次数)
另一答案
我不知道这是否可以帮助你,但在这些情况下我使用persisted?
方法。
person = Person.new(id: 1, name: 'bob')
person.persisted? # => false
以上是关于分别跟踪新记录和更新记录的计数的主要内容,如果未能解决你的问题,请参考以下文章