我需要在数据库中保存对象,前提是其他人没有更新。 例如,
p = Person.find_by_id(1)
p.token = '83747'
这里,我希望只有在数据库中没有更新时才将对象保存在数据库中。类似于下面的查询。
update persons set token='83747' where id=p.id and updated_at != p.updated
我认为我可以使用lock_version来实现这一目标。但是,我需要它来避免在从cron作业运行时更新它。有没有办法使用Active记录实现此目的。并且模型上有回调。
为了进一步澄清,我试图不更新数据库中的记录,如果我有记录的陈旧副本,以避免覆盖其他人所做的更改。
如何在不使用lock_version并确保回调有效的情况下实现这一目标?
答案 0 :(得分:0)
您可以同时使用created_at
和updated_at
默认属性(如果这足够您的情况),可以使用以下内容
p = Person.find_by(1)
# if has never been updated yet
if p.created_at != p.updated_at
p.token = '83747'
p.save
end