Использование меток времени в рельсах для отправки писем - PullRequest
0 голосов
/ 21 декабря 2011

Я хотел бы перебрать свою базу данных и найти каждый элемент, который был размещен в определенный период времени назад (например, 5 или 3 дня назад), и автоматически отправлять пользователю электронное письмо каждый раз, когда я запускаю скрипт.Поэтому, если пользователь не был активирован в течение 5 дней, я хочу, чтобы скрипт запускался ежедневно и проверял, прошло ли время с момента создания пользователя 5 дней или 3 или что-то в этом роде.

Как мне поступитьделать это в Rails?

Вот что у меня есть:

def send_reminders

@users = User.where :activated => false
@message= "Hi"
@users.each do |n|

   ActMailer.remind_users(n, current_user, @message).deliver

end

redirect_to current_user, :notice => 'Reminders were successfully sent'

end

Спасибо

1 Ответ

1 голос
/ 21 декабря 2011

С помощью чуть-чуть cron (рекомендуйте когда всякий раз, когда gem ), вы можете запускать подобные вещи.

Возможно, у вас есть что-то в вашем пользовательском классекак:

class User < ActiveRecord::Base
  REMINDER_TIME_IN_DAYS = 5

  scope :unactivated, where(:active => false)
  scope :unreminded,  where("reminded = ? AND created_at < ?", true, REMINDER_TIME_IN_DAYS.days.ago)

  def self.send_reminders_to_unactivated_users
    User.unactivated.unreminded.each(&:send_activation_reminder)
  end
end

И затем в файле schedule.rb для всякий раз:

every 1.day, :at => "12:00 am" do
  User.send_reminders_to_unactivated_users
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...