0

Linksこれで、最初に Nokogiri を使用して入力されたリンクのテーブルがあります。

サイトをクロールして、サイト内のすべてのリンクを取得し、それらをテーブルにダンプしました。

それらのいくつかはあまり頻繁に変更されるとは思いません - おそらく月に1回です。決して変わらないものもあります。しかし、基本的には、メソッドを実行して Nokogiri を実行し、リンクのリストを返すようにしたいと考えています。

データベースに対して各リンクをチェックし、データベースにないリンクが見つかった場合にのみ新しいレコードを追加したいと考えています。

可能な限り最も効率的な方法でそれを行うにはどうすればよいですか?

new_linksNokogiriから取得した最新のリンクの配列があるとします。

ありがとう。

4

1 に答える 1

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) }

エレガント?

于 2012-06-19T23:25:33.907 に答える