基本的に、RSSソースフィードから投稿を作成できるブログタイプのアプリケーションがあります。これには、feedzirra gemを使用しています。
def self.update_from_feed
feed_url = ENV['FEED_URL']
feed = Feedzirra::Feed.fetch_and_parse(feed_url)
add_entries(feed.entries)
end
したがって、投稿モデルのメソッドの 1 つは、解析されたフィードからの新しい投稿の作成を処理し、次のようになります。
def self.add_entries(entries)
entries.each do |entry|
unless exists? :guid => entry.id
create!(guid: entry.id, name: entry.title, author: entry.author, summary: entry.summary, published_at: entry.published)
end
end
Feedzirra には、フィードの変更をチェックできる update メソッドも用意されています (私は実装しようとしましたが、機能させることができませんでした)。変更が存在する場合は、フィード内の変更をダウンロードして作成します。必要に応じて新しい投稿。上記の方法でわかるようunless exists?
に、ソースと比較して投稿が既に作成されている場合 (guid を使用して決定) を使用すると、それはスキップされ、変更は行われません。
ただし、ブログタイプのアプリケーションでは、理想的には、存在するかどうかを確認する代わりに、変更されたかどうかを確認し (つまり、その:summary
部分が私が求めているものです)、おそらくlast_modified
アクセサーを使用してから、既に作成されたレコードを更新します。このようにエントリを更新できるようにするために使用できるものに似たものはありますかexists?
/私は正しい軌道に乗っていますか、それとももっと深く掘り下げる必要がありますか?