2013-07-25 70 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。