Существует несколько этапов, и поскольку я относительно новичок в рельсах, я не уверен, что я приближаюсь к этому наилучшим образом.Пользовательский метод модели, устанавливающий область для автоматической отправки почты
Пользователи следуют за Фирмами, Заявки на фирму открываются и закрываются в определенные дни. Если пользователь следует фирме, я бы хотел, чтобы они автоматически получали электронное письмо, когда а) открылось приложение для фирм, б) за неделю до закрытия заявлений фирм, в) в тот день, когда закрываются заявки фирм.
Я пробовал использовать именованный scope. У меня есть следующий модельный метод (я предполагаю, что это потребует небольшой работы), устанавливающего каждую область фирмы, в зависимости от даты.
модель firms.rb
def application_status
if open_date == Today.date
self.opening = true
else
self.opening = false
end
if ((close_day - Today.date) == 7)
self.warning = true
else
self.warning = false
end
if close_day == Today.date
self.closing = true
else
self.closing = false
end
end
Я хотел бы этот метод будет называться на каждой фирмы один раз в день, так что каждая фирма имеет соответствующий объем - поэтому я попытался использовать всегда, когда драгоценный камень (CRON) и следующий код. Выполнение вышеуказанного модельного метода для каждой фирмы.
Schedule.rb
every 1.day do
runner "Firm.all.each do |firm|
firm.application_status
end"
end
Тогда для каждого открытия прицелов, предупреждение, закрытия у меня есть метод в файле когда это графики, для простоты я буду показывать только методы открытия. Следующие запросы для всех фирм, у которых была открытая область применения к ним, и запускают на них метод application_open_notification.
Schedule.rb
every 1.day do
runner "Firm.opening.each do |firm|
firm.application_open_notification
end"
end
Это вызывает следующий метод в модели Firm.rb
def application_open_notification
self.users.each do |user|
FirmMailer.application_open(user, self).deliver
end
end
Который в свою очередь, вызывает последний кусочек головоломки ... который должен отправить пользователю электронной почты, включая название фирмы.
def application_open(user,firm)
@firm = firm
@user = user
mail to: @user.email, subject: @firm' is now accepting applications'
end
end
Является ли это жизнеспособным способом решения этой проблемы? В частности, я не очень хорошо разбираюсь в кодировании в модели.
Большое спасибо за любую помощь, которую вы можете предложить.
Я думаю, что ваша идея пропустить область видимости и создать модельные методы ALOT clean, тогда я могу просто позвонить каждому из них один раз в день. Черт возьми, это действительно отличная помощь! – RMcNairn