0
現在、モデル内のさまざまな状態に関連付けられた多数の電子メールがあります。 IEが "保留中"から "確認済み"になると、電子メールが生成されます。メーラーをステートフルモデルに含めるかcontollers内に保持する
電子メールの生成がモデル内にあるのかコントローラーにあるのかを今考え直していますか?メーラーを非対称に実行するように更新しています。これは、データベースのオブジェクトをパラメータとしてマイラーに渡し、代わりにレコード識別子を渡して後で参照できるようにするためです。
モデル内からこれを行う際の問題は、メソッド内のすべてのステップが呼び出されるまでレコードが実際には保存されないことです。それで、メーラーがステップなどに依存している場合、私のメーラーが壊れてしまいます。
これをすべてモデルから外すべきですか?または、メールを送信する前に保存する方法がありますか?代わりにActiveRecord::Oserverてください電子メールの生成を置くことについての
event :confirm do
transitions :to => :confirmed, :from => :pending, :on_transition => :do_confirm
end
def do_confirm(finished_at = Time.now)
self.confirmed_at = finished_at
UserMailer.confirmed_booking_request(self).deliver # old way, doesn't matter if record is saved or not
UserMailer.confirmed_booking_request(self.id).deliver #doesn't work since the record hasn't been saved and confirmed_at is nil
end
または私は私のコントローラ内のメールの生成を行う必要があります
if @confirmation.save
@confirmation.booking.reject!
UserMailer.confirmed_booking_request(@confirmation.id).deliver #previously did this all from the above method
redirect_to space_path(@confirmation.booking.space)
end