Ruby博客中的后期调度

时间:2016-12-12 06:08:51

标签: ruby-on-rails ruby ruby-on-rails-4 web blogs

我正在使用gem“when when”处理邮件调度模型,其状态为:published_at,schedule和drafts。但问题是在给定的时间后,帖子没有将其状态从Schedule更改为Published_at。

#schedule.rb
     every 1.minute do
      rake 'scheduler'
    end
#example.rake
task scheduler: :environment do
  time = Time.zone.now
  posts = Post.scheduled.where(published_at: (time))
  posts.update_all(status: "Published")

end

1 个答案:

答案 0 :(得分:1)

task scheduler: :environment do
  Post.scheduled.publish_now!
end
你的模型中的

post.rb添加以下行:

def self.publish_now!
  where(published_at: Time.now).update_all(status: "Published")
end

我认为通过Time.now进行搜索太冒险了,因为它会在第二时间获得准确的时间,但是你的调度程序每隔1.分钟,所以你有可能因为60秒的间隙而错过Post。所以你最好这样查询:

def publish_now!
  where("status != ? AND published_at <= now()", "Published").update_all(status: "Published")
end