0

我正在使用 Ruby on Rails(服务器端)和 iOS6(客户端)做一个 RESTFul 应用程序。通信是使用 JSON 完成的。

@notifications = @update[:notifications]
    if @notifications
      @last_id = @notifications[:last_id]
      @last_update = @notifications[:last_update]
      @new_notif = OrgNotification.where('id > ?',@last_id)
      @updated_notif = OrgNotification.where('updated_at != ?',@last_update )..where('id <= ? AND ? < updated_at',@last_id,@last_update )
end

在这段代码中,我想放入 @updated_notif 变量,所有通知的 id 都小于我已经看到的最后一个通知和一个 update_at,它在 [:last_update] 中传递的方式之后。我的问题是,在两个日期相等的情况下,我得到了那一行。

我试过了:

OrgNotification.where('id <= ? AND ? < updated_at',@last_id,@last_update ).where('updated_at NOT IN (?)', @last_update)
OrgNotification.where('id <= ? AND ? < updated_at',@last_id,@last_update ).where('updated_at != ?', @last_update)
OrgNotification.where('id <= ? AND ? < updated_at AND updated_at != ?',@last_id,@last_update,@last_update )

这是 SQL:

SELECT "org_notifications".* FROM "org_notifications" WHERE (id <= '2' AND '2013-06-02 21:04:13 UTC' < updated_at) AND (updated_at NOT IN ('2013-06-02 21:04:13 UTC'))

如果日期不同,无论是更小还是更大,它都可以正常工作。我该如何解决这个问题?有什么我可以尝试的吗?

谢谢

编辑

我从终端去了数据库,看到了这个。

2013-06-02 21:04:13.834167|2013-06-02 21:04:13.834167

我的问题在于精度。我怎样才能将此精度发送给我的客户?

我试过 .to_r、.to_a、.to_s。

        "updated_at": <%= notif.updated_at{here} %>

它可以作为字符串使用,因为我只使用它在服务器端进行比较。

4

1 回答 1

0

Notification假设一个被调用的实例notif,尝试

notif.updated_at.strftime('%Y-%m-%d %H:%M:%S.%N')
于 2013-06-03T00:35:49.247 回答