如何在外部源发生更改后快速扫描数据库并进行更新?

时间:2012-06-19 21:47:27

标签: ruby ruby-on-rails-3

所以我有一个表Links的链接,最初是使用Nokogiri填充的。

我刚刚抓取了一个网站,获得了该网站中的所有链接并将其转储到表格中。

我不希望他们中的一些经常变化 - 也许每月一次。有些人永远不会改变。但基本上我想运行我的方法然后执行Nokogiri并返回一个链接列表。

我想检查针对我的数据库的每个链接,并且只在找到不在数据库中的链接时添加新记录。

如何以最有效的方式实现这一目标?

假设我从Nokogiri获得了最新链接的数组new_links

感谢。

1 个答案:

答案 0 :(得分:1)

仅插入新链接

#Remove found links from new_links array and insert them into DB
links_to_insert = new_links - Link.where(['url IN (?)', new_links]) 
links_to_insert.each { |link| Link.create!(link) }

优雅?