Я новичок в работе с CRON, но я думаю, что я правильно его настроил.
В конечном итоге я пытаюсь отправлять пользователям по электронной почте каждый день в 8:00 ( и пару других), которые не вошли в систему в течение последних 3 дней, не получили электронное письмо и помечены как активные ИЛИ временные как статус.
Итак, при запросе базы данных в консоли я знаю, что я может сделать:
- first = User.where (статус: 'active'). или (User.where (status: 'temp'))
- second = first.where ( "last_login_at <?", Time.now-3.days) </li>
- third = second.where (уведомлено: false)
Это не совсем понятно, но я пытался найти содержащий запрос, который захватил все эти данные. Есть ли более чистый способ выполнить этот запрос?
Я считаю, что моя задача cron правильно настроена с использованием бегуна. У меня есть всякий раз, когда установлен и в моем schedule.rb у меня есть:
every 1.day, at: '8:00 am' do
runner 'ReminderMailer.agent_mailer.deliver'
end
Так под app> mailer я создал ReminderMailer
class ReminderMailer < ApplicationMailer
helper ReminderHelper
def agent_reminder(user)
@user = user
mail(to: email_recipients(user), subject: 'This is your reminder')
end
def email_recipients(agent)
email_address = ''
email_addresses += agent.notification_emails + ',' if agent.notification_emails
email_addresses += agent.manager
email_address += agent.email
end
end
Где я на самом деле борюсь, это где я должен поставить мои запросы для отправки в почтовую программу, именно поэтому я создал ReminderHelper.
module ReminderHelper
def applicable_agents(user)
agent = []
first = User.where(status: 'active').or(User.where(status: 'temp'))
second = first.where("last_login_at < ? ", Time.now-3.days)
third = second.where(notified: false)
agent << third
return agent
end
end
РЕДАКТИРОВАТЬ: Итак, я знаю, что теоретически я могу сделать цепочку запросов. Должен быть лучший путь, верно?
Так что мне нужна помощь: у меня есть правильная структура на месте? Есть ли более чистый способ запросить эти данные в ActiveRecord для задания CRON? Есть ли способ проверить это?