2009-05-06 11 views
0

私が書いている不動産アプリケーションの一部は、ユーザーが場所を購読できるようにし、その場所で新しいプロパティが利用できるようになると、その旨を知らせる電子メールが届きます。Ruby on Rails通知デーモンが同じ情報を複数回電子メールで送信するのを防ぐ

私は、マッチングを処理するために数時間に1回バックグラウンドプロセスを実行する予定です。

私は現在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 

明白なことは行うには、場所のリストをループで、もう1つは通知に、通知モデルで定義されUSER_EMAILにメールを送信することを一致した場合。

私が避けようとしているのは、ある場所に関する同じメールを複数回同じユーザに送信することです。数時間ごとに実行されるプロセスとは何ですか?

"has_been_mailed"という通知モデルに別のフィールドを追加することを考えました。メールが送信されるとtrueに設定されますが、追加された他の場所の今後の更新は取得されません。

これを実装する最善の方法については、誰にも提案はありますか?

+0

今、私はあなたが間違った角度からこの全体に近づいているように見えますが、詳細を知らないと難しいです。 – kch

答えて

0

モデルを大幅に変更することなく、両方のテーブルにタイムスタンプフィールドcreated_atupdated_atを設定する必要があります。

これで、メーラースクリプトを最後に実行してから更新された場所と通知のみを照会できます。

+0

私はcreated_atフィールドとupdated_atフィールドを完全に忘れてしまった。完璧。ありがとう。 – KJF

関連する問題