【问题标题】:Automatically Generating Daily Posts For A Blog With Ruby On Rails使用 Ruby On Rails 自动为博客生成每日帖子
【发布时间】:2017-05-08 04:32:00
【问题描述】:

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

目前,只要今天的日期在用户帐户的“开始日期”之后,它就会在每天执行 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 任务将不会生成回溯的每日帖子。有没有人对如何解决这个问题有任何想法,以便 rake 任务仍然执行其当前工作但也处理这种情况?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:
    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
    

    您的逻辑保持不变,我只是将开始日期循环到当前日期以创建回溯的帖子。将帖子计数检查为零将确保条件仅适用于未在之前创建帖子的新用户/用户。

    希望对你有帮助..

    【讨论】:

    • 谢谢,这是一个很好的答案!
    • 我很高兴它有所帮助..我建议您将主题/问题更改为更笼统。就像您在回溯或类似情况下遇到的错误一样。问题实际上不是“如何自动生成每日帖子”,而是不同的。
    • 嗨,只是跟进:我尝试实现此功能,但出现以下错误:NoMethodError: undefined method `upto'
    • 只是一个更新:我不得不使用“starting_date = currentUser.start_date.to_datetime”而不是上面的代码
    猜你喜欢
    • 2012-01-16
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多