2017-05-08 103 views
0

目前我有一個rake任務,我將使用Heroku Scheduler每日運行一次。使用Ruby On Rails自動生成日誌文章使用Ruby On Rails

只要今天的日期在用戶帳戶的「開始日期」之後,它現在每天都會爲用戶生成一個新的帖子。

這是耙任務的代碼:

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 

我的問題是,如果有人讓一個帳戶,然後一段時間設定開始日期的過去(這樣他們就可以在舊帖子填寫)我目前的耙子任務將不會生成每日回帖。有沒有人有任何關於如何解決這個問題,使耙子任務仍然執行其當前的工作,但也處理這種情況?

回答

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 

你的邏輯是一樣的,我只是loopes在起始日期爲當前日期創建追溯職位。檢查過帳數量爲零將確保條件爲真,僅適用於其以前未創建帖子的新用戶/用戶。

希望它有幫助..

+0

謝謝,這是一個很好的答案! – Andrew

+0

我很高興它幫助..我會建議你改變主題/問題是更一般的。就像你所面對的回溯或類似錯誤......問題實際上並不是「如何自動生成日常帖子」,而是不同。 –

+0

嗨,只是一個後續行動:我試圖實現這一點,我得到以下錯誤:NoMethodError:未定義的方法'upto' – Andrew