模型 ID 的顺序是否可靠地指示了模型的创建顺序?



场景

更新:我注意到,按created_at排序实际上会比较一个足够分辨率的毫秒浮点值(到目前为止)。然而,尽管我现在觉得有点笨,但我的问题仍然存在。我的场景无关紧要,所以我删除了它。

问题

我知道数据库通过跟踪一行的ID来精确地知道创建顺序。

依赖最新ID来确定订单是否存在陷阱

更好的解决方案是用比一秒更精确的东西替换latest_post_at。Time.now.to_f而不是.to_i将为您提供亚秒精度(我认为是毫秒,文档不清楚)。如果两个帖子碰巧有相同的毫秒时间戳,您可以使用id作为平局决胜局。

如果您使用的是为数据库生成自动递增代理主键的"自然"方式,那么唯一会想到的陷阱是,数据库序列发生器生成ID的顺序可能不是创建Post记录的事务开始或结束的顺序。(或者,您可以定义"创建"帖子的时间。)

考虑到交易通常需要几分之一秒才能完成,这种不确定性可能与您的需求无关。

最新更新