Ruby on rails 使用RubyonRails自动生成日志

Ruby on rails 使用RubyonRails自动生成日志,ruby-on-rails,Ruby On Rails,目前,我有一个rake任务,我将使用Heroku调度器每天运行该任务 当前,只要今天的日期在用户帐户的“开始日期”之后,当执行rake任务时,它每天都会为用户生成一个新的post 这是rake任务的代码: namespace :abc do desc "Used to generate a new daily log" task :create_post => :environment do User.find_each do |currentUser| starting_date

目前,我有一个rake任务,我将使用Heroku调度器每天运行该任务

当前,只要今天的日期在用户帐户的“开始日期”之后,当执行rake任务时,它每天都会为用户生成一个新的post

这是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任务将不会生成回溯的每日帖子。有没有人知道如何解决这个问题,以便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
      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
你的逻辑是一样的,我只是把开始日期循环到当前日期来创建回溯的帖子。将post count检查为零将确保该条件仅适用于未提前创建post的新用户/用户


希望能有所帮助。

谢谢,这是一个很好的答案!我很高兴这有帮助。我建议你把话题/问题改得更一般一些。就像你在回溯时遇到的错误,或者类似的问题。问题不是“如何自动生成每日帖子”,而是不同的。嗨,只是一个跟进:我尝试实现了这一点&我得到了以下错误:NoMethodError:未定义的方法'Up'只是一个更新:我不得不使用“starting_date=currentUser.start_date.to_datetime”而不是上面的代码