2013-07-25 108 views
2

我已經通過試錯的是交付與交付之間的差異!

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

將發送電子郵件無論@post的價值發現方法(軌道4),而

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

(使用提供!VS提供)如果@posts爲空,會不會正確發送電子郵件?

這是爲什麼?我知道交付!拋出一個異常,如果它不能被髮送,但不應該提供也聽取條件?

+0

無論* @ post * _的值如何。你的意思是* @職位*? – DNNX

+0

是的,那是一個錯字! – neon

回答

4

使用source_location以找到一個方法定義:

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

這點你these lines in the mail gem,並給出你答案:

deliver!繞過檢查perform_deliveries和raise_delivery_errors。