编写一个每天运行的任务,但只查找created_at在一周之前增量的用户。我想按照
的方式做点什么User.where("created_at.days_ago % 7 = 0")
我该怎么做?
修改
作为参考,该任务用于验证用户的电子邮件。他们可以继续使用该产品而无需验证一段时间,但我想定期(每周一次)通过电子邮件进行验证。我正在使用heroku调度程序执行此操作,并且它允许的运行之间的最长时间为1天,这就是为什么我只需要从创建时起1周增量的人员
答案 0 :(得分:1)
您可以使用以下内容来生成日期列表:
((User.minimum(:created_at).to_date)..(Date.today)).to_a.select{|d| (Date.today - d) % 7 == 0}
由于created_at是一个时间戳,您可能需要对其应用SQL函数,以将其截断为日期。
days = ((Date.today-1.years)..(Date.today)).to_a.select{|d| (Date.today - d) % 7 == 0}
User.where("created_at::date in (?)", days)