3

トレイルアンドエラーで気付きました

UserMailer.newsletter(@user, @posts).deliver unless @posts.blank?

@post の値に関係なく電子メールを送信しますが、

UserMailer.newsletter(@user, @posts).deliver! unless @posts.blank?

@posts が空白の場合、(deliver! と delivery を使用) は正しくメールを送信しませんか?

どうしてこれなの?私は配達を知っています!送信できない場合は例外をスローしますが、条件をリッスンして配信する必要はありませんか?

4

1 に答える 1

5

source_locationメソッドが定義されている場所を見つけるために使用します。

UserMailer.newsletter(@user, @posts).method(:deliver).source_location
=> ["gems/mail-2.5.4/lib/mail/message.rb", 229]

これにより、mail gem の次の行が示され、答えが得られます。

deliver!perform_deliveries と raise_delivery_errors のチェックをバイパスします。

于 2014-07-01T22:45:22.260 に答える