Ruby on rails 定期导入每个用户';s RSS提要与Rails中的Feedzirra

Ruby on rails 定期导入每个用户';s RSS提要与Rails中的Feedzirra,ruby-on-rails,activerecord,feedzirra,Ruby On Rails,Activerecord,Feedzirra,我正在尝试定期将一组RSS提要导入Rails中的Posts表中。我现在正试图避开克朗。以下是我到目前为止(在我的应用程序控制器中)所拥有的内容 正如您可能得出的结论,RSS提要的数组来自设置提要字段的具有编写者角色的用户。脚本每60分钟执行一次 我的问题是如何在不重新导入任何以前导入的帖子的情况下导入提要?由于我刚刚开始编程,并将其作为一个学习曲线项目来做,如果有任何建设性的批评意见对提高我的代码的效率,我洗耳恭听 编辑:再想一想,在我的应用程序控制器中这样做合适吗?这将在每次加载页面时创建此调

我正在尝试定期将一组RSS提要导入Rails中的Posts表中。我现在正试图避开克朗。以下是我到目前为止(在我的应用程序控制器中)所拥有的内容

正如您可能得出的结论,RSS提要的数组来自设置提要字段的具有编写者角色的用户。脚本每60分钟执行一次

我的问题是如何在不重新导入任何以前导入的帖子的情况下导入提要?由于我刚刚开始编程,并将其作为一个学习曲线项目来做,如果有任何建设性的批评意见对提高我的代码的效率,我洗耳恭听


编辑:再想一想,在我的应用程序控制器中这样做合适吗?这将在每次加载页面时创建此调度程序的新实例,对吗?如果我在这方面是正确的,那么我可以安全地将此代码放在哪里?

回答您的第二个问题:不,这不应该在您的控制器中运行。有几个流行的宝石,使预定的任务在那里。我建议“无论何时”:


它们有很好的文档,应该很容易理解。这些任务将在一个配置/调度.RB文件中指定,而不是您的应用程序控制器。

< P>您可以考虑避免导入先前导入的feed,在DB中创建一个字段,例如“IDIOLL”,从每个feed添加到该字段的任何常量变量,例如RSS源中的日期/时间,然后,您可以在模型中验证id_unique的唯一性,或者添加一个方法来查找或创建id_unique

我甚至不能在没有看到你的帖子模型的情况下开始回答你的第一个问题。每个Feedzirra项目都应该有一个etag属性,作为项目的唯一标识符。如果要将其存储在表中,可以使用它来确定提要中的特定项是否为“新”。
require 'rubygems'
require 'rufus/scheduler'
require 'feedzirra'
scheduler = Rufus::Scheduler.start_new
scheduler.every '60m' do
  @users = User.all(:joins => :roles, :conditions => {:roles => {:name => "writer"}})
  @users.each do |user|
    if user.feed.blank? 

    else
      FEEDZIRRA IMPORT CODE??
    end
  end