安排在rails 3博客中发布帖子

时间:2011-10-28 11:18:59

标签: cron ruby-on-rails-3.1 queue scheduled-tasks background-process

我正在开发一个网站(使用Rails 3.1),其中有限的“作家”能够撰写帖子。 “版主”应接受(或拒绝)帖子并安排发布。直到这一刻,开发过程才非常基础。

每天有两个发布时刻。接受的帖子将被放置在某种队列中。每天上午10:00和下午4:00必须发布最早的接受帖子。 但是,我还需要能够**手动设置**发布时间的日期和时间。

实现结果的最佳方法是什么?克龙?后台工作?

1 个答案:

答案 0 :(得分:1)

因此...

1)有一个accepted_at字段,您也可以手动设置;这是“上线的时间”。

2)

class Post
  scope :ready_to_be_published, lambda{ where(['accepted_at<? and not published', Time.zone.now]).order('accepted_at ASC') }

  def accept!(time_to_go_live = nil)
    update_attributes!(:accepted_at => time_to_go_live || Time.zone.now)
  end
end

3)在上午10点和下午4点有一个whenever工作来执行佣金任务

task :publish_a_post => :environment do
  Post.ready_to_be_published.first.update_attributes!(:published => true)
end