2

deliver_now配信中にエラーが発生した場合にエラーをキャッチできるように、メソッド呼び出し をラップするにはどうすればよいですか?

@user = User.new(user_params)
if @user.valid?
  MyMailer.user_email(@user).deliver
  # hmmm....  how do we catch if the email is not sent?  
else
  ...
end
4

1 に答える 1

2

config.action_mailer.raise_delivery_errors = trueアプリケーション構成で設定していることを確認してください。その後、レスキュー ブロックで例外をキャッチできます。このようなもの:

@user = User.new(user_params)
if @user.valid?
  begin
    MyMailer.user_email(@user).deliver
  rescue StandardError => e
    # do something with the messages in exception object e
    flash[:error] = 'Problems sending email'
  end
else
  ...
end
于 2015-10-07T19:04:08.480 に答える