1

基本的に、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?/私は正しい軌道に乗っていますか、それとももっと深く掘り下げる必要がありますか?

4

1 に答える 1

1

試すことができchanged?ます。

アイデアは次のとおりです(既存のレコードの場合):保存せずに属性を設定し、entry.changed?

于 2013-11-19T10:19:02.180 に答える