-3

重複の可能性:
Railsに入力されたユーザーの日付に応じて毎週ユーザーにメールを送信し続ける方法

ユーザーが情報名、日付、メールアドレスを入力できるシステムを構築しています。ユーザーが挿入してから7日ごとにシステムが自動的にユーザーにメールを送信するようにしたい。

これが私のメーラーです

class UserMailer < ActionMailer::Base
  default from: "from@example.com"
   def welcome_email(dop)
    @dop = dop
    @url  = "http://example.com/login"
    mail(:to => dop.mail, :subject => "Welcome to My Awesome Site")
  end
end

これはコントローラーです:

def create
    @dop = Dop.new(params[:dop])

    respond_to do |format|
      if @dop.save
        UserMailer.welcome_email(@dop).deliver
        format.html { redirect_to @dop, notice: 'Dop was successfully created.' }
        format.json { render json: @dop, status: :created, location: @dop }
      else
        format.html { render action: "new" }
        format.json { render json: @dop.errors, status: :unprocessable_entity }
      end
    end
  end
4

2 に答える 2

3

rakeタスクを作成し、cronを介してそのタスクを呼び出す必要があります。

例えば:

task :send_email => :environment do
  Dop.where('last_email <= ?', 7.days.ago).each do |dop|
    UserMailer.welcome_email(dop).deliver
    dop.update_attribute('last_email', Time.now)
  end
end

次に、このRakeタスクを数分ごとに呼び出して電子メールを自動的に送信するようにマシンのCronスケジューラを設定します。

Cronは、あらかじめ決められた間隔でプログラムを実行するUnixスケジューラです。

crontab -eを使用してcrontabファイルを編集し、次のように入力する必要があります。

*/5 * * * *  /bin/bash cd <path_to_your_app> && rake send_email

*/5 * * * *、5分ごとに実行すると言います。

于 2012-06-26T08:50:51.537 に答える
0

と呼ばれる宝石を探してくださいwhenever

それはまさにあなたが望むことをします。

于 2012-06-26T11:00:23.260 に答える