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

因此,我的帖子模型中的一种方法处理从解析的提要创建新帖子,看起来像这样:

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 也有一个可用的更新方法(我已经尝试实现但无法让它工作),它可以检查提要的更改,如果存在更改,它将下载提要中的更改并创建必要时的新职位。正如您在我上面的方法中看到的那样,使用unless exists?是否已经创建了帖子(使用 guid 确定)与它跳过它并且不进行任何更改的源相比。

但是,在博客类型的应用程序中,理想情况下,它不是检查是否存在,而是检查它是否发生了变化(即:summary我所追求的部分),也许使用last_modified访问器,然后更新已经创建的记录。有没有类似的东西exists?我可以用来让条目像这样更新/我是在正确的轨道上还是我需要更深入地挖掘?

4

1 回答 1

1

你可以试试changed?

想法如下(对于现有记录):设置属性而不保存并检查是否entry.changed?

于 2013-11-19T10:19:02.180 回答