Ruby on rails 使用RubyonRails自动生成日志
目前,我有一个rake任务,我将使用Heroku调度器每天运行该任务 当前,只要今天的日期在用户帐户的“开始日期”之后,当执行rake任务时,它每天都会为用户生成一个新的post 这是rake任务的代码: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
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”而不是上面的代码