Post 在 Ruby 博客中安排

Post Scheduling in Ruby Blog

我正在使用 gem "whenever" 开发 post 调度模型,状态为:published_at、调度和草稿。但问题是在给定时间 post 没有将其状态从 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
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.minutes,所以你可能会错过 Post因为间隔 60 秒。这样您就可以更好地查询:

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