我sync
在我的 rails 应用程序中实现了一个方法,但是我的 SQL 查询以错误的顺序执行,从而打乱了同步。
基本上,我从客户端应用程序发送新对象以及上次同步的时间戳,然后获取自时间戳以来服务器上发生的任何更改。然后,我从客户端创建新对象,并在创建新对象后保存时间戳,以将它们从下一次同步中排除。
def sync(new_obj_hashes, last_sync)
updated_items = Item.where(user_id: user_id).where("updated_at > ?", last_sync)
new_obj_hashes.each |obj_hash|
Item.new(obj_hash).save!
end
last_sync = Time.now
end
问题:来自我的 SQL 日志
UPDATE "items" SET ...blah blah... WHERE "items"."id" = x
SELECT "items".* FROM "items" WHERE "items"."user_id" = y AND (updated_at > z)
它首先创建新对象,然后获取更新的对象,这意味着 updated_items(我将其发送回客户端应用程序)也包含客户端发送的所有对象。
如何让 SELECT 语句在 UPDATE 之前发生?