当前位置:  开发笔记 > 数据库 > 正文

Rails created_at时间戳顺序不同意id顺序

如何解决《Railscreated_at时间戳顺序不同意id顺序》经验,为你挑选了1个好方法。

我有一个Rails 2.3.5应用程序,其中包含一个包含id和created_at列的表.该表记录了实体随时间的状态变化,因此我偶尔会使用它来查找特定时间的实体状态,方法是查找在该时间之前发生的状态更改,并根据created_at时间戳选择最新的状态.对于1445个实体中的10个,状态变化的时间戳与id的顺序不同,并且最后状态变化的状态不同于与实体本身一起存储的状态,例如

  id  |     created_at      | entity_id | state |
------+---------------------+-----------+-------+
 1151 | 2009-01-26 10:27:02 | 219       | 1     | 
 1152 | 2009-01-26 10:27:11 | 219       | 2     | 
 1153 | 2009-01-26 10:27:17 | 219       | 4     | 
 1154 | 2009-01-26 10:26:41 | 219       | 5     | 

我可以通过对id而不是时间戳进行排序来解决这个问题,但是无法想象它是如何发生的.该应用程序使用了几个mongrel实例,但它们都在同一台机器上(Debian Lenny); 我错过了一些明显的东西吗 DB是Postgres.



1> KARASZI Istv..:

因为Rails使用数据库序列id在插入时为您的字段(至少在PostgreSQL中)获取新的id,或者RETURNING如果数据库支持它,则使用关键字.

但是它使用使用系统时间的方法更新了创建created_atupdated_at字段ActiveRecord::Timestamp#create_with_timestamps.

该行1154稍后插入,但created_at之前计算了字段的时间戳.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有