使用Ruby on Rails自动为博客生成每日帖子

时间:2017-05-08 04:32:00

标签: ruby-on-rails

目前我有一个rake任务,我将每天使用Heroku Scheduler运行。

只要今天的日期在"开始日期"之后,它就会在每天执行rake任务时为用户生成一个新帖子。用户帐户。

这是rake任务的代码:

namespace :abc do 
desc "Used to generate a new daily log"

task :create_post => :environment do

User.find_each do |currentUser|
 starting_date = currentUser.start_date

 Post.create!(content: "RAKED", user: currentUser, status: "new") if Date.today >= starting_date && Date.today.on_weekday?
end

puts "It worked yo"     
end

end

我的问题是,如果有人创建帐户,然后在过去的某个时间设置他们的开始日期(这样他们可以填写旧帖子)我当前的佣金任务将不会生成回溯的每日帖子。有没有人对如何解决这个问题有任何想法,以便rake任务仍然执行当前的工作,但也处理这种情况?

1 个答案:

答案 0 :(得分:0)

namespace :abc do
  desc "Used to generate a new daily log"
  task :create_post => :environment do
    User.find_each do |currentUser
      starting_date = currentUser.start_date
      if Date.today >= starting_date && Date.today.on_weekday?
        if currentUser.posts.count.zero?
          starting_date.upto(Date.today) { |date| currentUser.generate_post if date.on_weekday? }
        else
          currentUser.generate_post
        end
      end
    end
    puts "It actually worked yo!"
  end
end

在用户模型中,

def generate_post
  posts.create!(content: "RAKED", status: "new")
end

你的逻辑仍然是一样的,我只是在开始日期到现在的日期,以创建回溯的帖子。将帖子计数检查为零将确保条件仅对其先前未创建帖子的新用户/用户为真。

希望有所帮助......