Запрет демону Ruby on Rails уведомления отправлять одну и ту же информацию по электронной почте более одного раза - PullRequest
0 голосов
/ 06 мая 2009

Часть приложения для недвижимости, которое я пишу, позволит пользователю подписаться на местоположение, и если новое свойство станет доступным в этом месте, то пользователь получит электронное письмо с уведомлением об этом.

Я планирую запускать фоновый процесс один раз в несколько часов для обработки соответствия.

Прямо сейчас у меня есть модель с названием location, и планируется добавить другую модель под названием Notification. Модель местоположения имеет широту и долготу, как и модель уведомления.

Что-то вроде:

create_table "locations", :force => true do |t|
    t.decimal  "lat",            :precision => 15, :scale => 10
    t.decimal  "lng",            :precision => 15, :scale => 10
end

create_table "notifications", :force => true do |t|
    t.decimal  "lat",            :precision => 15, :scale => 10
    t.decimal  "lng",            :precision => 15, :scale => 10
    t.string   "user_name"
    t.string   "user_email"
end

Очевидная вещь, которую нужно сделать, - перебрать список местоположений, и если кто-то совпадает с этим в уведомлении, тогда отправьте письмо на user_email, определенный в модели уведомлений.

Чего я пытаюсь избежать, так это отправка одного и того же электронного письма о местоположении одному и тому же пользователю более одного раза. Что с процессом, запущенным каждые несколько часов.

Я подумал о добавлении еще одного поля в модель уведомлений под названием has_been_mailed, которое будет иметь значение true после отправки письма, но это означает, что в будущем не будет добавлено никаких обновлений других местоположений.

У кого-нибудь есть какие-либо предложения относительно наилучшего способа реализации этого?

1 Ответ

0 голосов
/ 06 мая 2009

Не сильно меняя модель, в обеих таблицах должны быть поля отметок времени created_at и updated_at.

При этом вы можете запрашивать только местоположения и уведомления, которые были обновлены с момента последнего запуска вашего почтового скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...