基本上我有一个博客类型的应用程序,可以使用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
因此,我的post模型中的一个方法处理从解析的feed创建一个新帖子,看起来像这样:
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还有一个可用的更新方法(我试图实现但无法使其工作),它可以检查提要中的更改,如果存在更改,它将下载更改根据需要提供并创建新帖子。正如您在上面的方法中所看到的,如果已经创建了一个帖子(使用guid确定),那么使用unless exists?
与源相比,它会跳过它并且不会进行任何更改。
但是,在博客类型的应用程序中,理想情况下它不会检查是否存在,检查它是否发生了变化(即:summary
部分是我所追求的),也许使用{{ 1}}访问者然后更新已创建的记录。有没有类似于last_modified
的东西,我可以使用它来更新这样的条目/我是在正确的轨道上还是我需要深入挖掘?