2017-05-08 7 views
0

現在、私はHeroku Schedulerで毎日実行するレーキタスクを持っています。Ruby On Railsを使ってブログを毎日自動的に生成する

現在、今日の日付がユーザーアカウントの「開始日」より後である限り、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タスクバック日付のポストは生成されません。誰かがこれを解決する方法についてのアイデアを持っているので、レーキタスクは現在の仕事を実行するだけでなく、このケースも処理しますか? Userモデルで

答えて

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にチェックすると、その投稿が以前に作成されていない新規ユーザー/ユーザーに対してのみ条件がtrueになります。

希望します..

+0

ありがとう、これは素晴らしい答えです! – Andrew

+0

私はそれが助けてくれてうれしいです...私はより一般的なトピック/質問を変更することをお勧めします。あなたがバックデートに直面したエラーのように、または類似しています。実際には、「毎日の投稿を自動的に生成する方法」ではなく、異なっています。 –

+0

こんにちは、ちょうどフォローアップ:私はこれを実装しようとした&私は次のエラーが表示されます:NoMethodError:未定義のメソッド 'upto ' – Andrew

関連する問題