基本上,我有一个博客类型的应用程序,可以从 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?
我可以用来让条目像这样更新/我是在正确的轨道上还是我需要更深入地挖掘?