目前我有一个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任务仍然执行当前的工作,但也处理这种情况?
答案 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
你的逻辑仍然是一样的,我只是在开始日期到现在的日期,以创建回溯的帖子。将帖子计数检查为零将确保条件仅对其先前未创建帖子的新用户/用户为真。
希望有所帮助......