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
我正在使用 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