我每天都在使用API一次。根资源是ID的有序列表,没有任何其他属性,例如" created_at"或者" updated_on"。
我需要记住我已经处理过哪些ID。目前我将最后一个ID存储在一个文件中,这是一个可行的解决方案但似乎有点奇怪。
仅将数据库用于一个ID太过分了。
如果带有ID的记录已经存在,我无法查看我的数据库,因为从API处理ID可以包括加入ID并转到下一个ID。
我正在寻找的解决方案需要持久,即使我重新启动服务器/应用程序或移动整个应用程序。如果它只是一个Rails解决方案,那就没关系了。有没有比使用文件更好的东西?
答案 0 :(得分:1)
以下是我们最终所做的事情:
由于将其存储在文件中有一些缺点,我们决定采用完全不同的方法。我们不想保存最新ID的另一个原因是我们不想依赖API,如果id的顺序发生变化怎么办?
因此我们创建了一个数据库表并插入了每个id,然后我们将id标记为已处理。使用这种方法,我们不必保存“最新ID”,我们总是将所有可用的ID与数据库中的所有ID进行比较,以检查哪些ID尚未处理。
答案 1 :(得分:0)
您可以将最后一个ID存储在文本文件中。如果它位于.gitignore中标记的目录中,则它应该通过重新部署等持续存在。您可能还希望将环境包含在文件名中。
用...写
File.open("#{Rails.env}_last_id.txt", 'w') { |f| f << current_last_id }
阅读......
previous_last_id = File.read("#{Rails.env}_last_id.txt")
答案 2 :(得分:0)
你可以去YAML :: Store。比读/写普通文件好一点,因为你可以使用事务。