Rails - 如何持久存储一个频繁更改的字符串?

时间:2018-01-04 08:56:46

标签: ruby-on-rails

我每天都在使用API​​一次。根资源是ID的有序列表,没有任何其他属性,例如" created_at"或者" updated_on"。

我需要记住我已经处理过哪些ID。目前我将最后一个ID存储在一个文件中,这是一个可行的解决方案但似乎有点奇怪。

仅将数据库用于一个ID太过分了。

如果带有ID的记录已经存在,我无法查看我的数据库,因为从API处理ID可以包括加入ID并转到下一个ID。

我正在寻找的解决方案需要持久,即使我重新启动服务器/应用程序或移动整个应用程序。如果它只是一个Rails解决方案,那就没关系了。有没有比使用文件更好的东西?

3 个答案:

答案 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。比读/写普通文件好一点,因为你可以使用事务。