2016-10-08 12 views
1

私はRuby on Railsでプロジェクトを行っています。このアプリは、 "電子メール"、 "件名"、 "本文"、 "予定時刻"の列(datetime_selectを持つフォームはレコードの挿入に使用されます)のテーブル "リマインダー"を持っています。Rails:Time.nowがdbに設定された時間と等しいときにメーラーメソッドを呼び出す

Time.nowがデータベースの「予定時刻」を満たしている場合、アプリはこの特定のレコード(件名と本文)を対応する電子メールアドレスに送信する必要があります。 「リマインダー」テーブルでTime.nowとスケジュールされた時間を比較すると思われるメソッドの作成を助けることができますか?(その時間に複数のレコードが存在することがあります)、必要なデータをメーラーに渡してください。 1分ごとにそれを実行するために「いつでも」スケジュールを立てるとよいでしょうか?あるいは、時間の比較や電子メールの送信を引き起こす他の方法を共有することもできます。タイムゾーンは現在考慮されるべきではなく、UTCでのみ使用されます。

私はRailsでかなり新しく、ウェブ上で関連性の高い情報を見つけることができないので、あらゆる情報や提案を高く評価しています。

ありがとうございます!

答えて

1

私はdelayed_job gemを使用することをお勧めします。私はそれが役に立てば幸い

after_create :send_delayed_mail 
... 

private 

def send_delayed_mail 
    Mailer.delay(run_at: self.time_column).send_mail(self) 
end 

:あなたのモデルでは、after_create方法のように指定する必要があります。それはあなたが与えたコードなしで、より正確に答えることは難しいです。

+0

ありがとうございます。これは、私が正しい方向を考えるように強制されたために役立ちました。しかし、私はおそらくdelayed_jobまたはデーモンを使用して毎時データベースを照会し、Time.nowとdatetime列の値を比較します。第二の選択肢は良いアプローチだろうと思いますか? – Alex

関連する問題