交付与交付之间的差异!方法(Rails 4)

时间:2013-07-25 21:21:36

标签: ruby-on-rails actionmailer ruby-on-rails-4

我通过追踪和错误注意到了

UserMailer.newsletter(@user, @posts).deliver unless @posts.blank?
无论@ post有什么价值,

都会发送电子邮件,而

UserMailer.newsletter(@user, @posts).deliver! unless @posts.blank?
如果@posts为空,

(使用deliver!vs deliver)将正确无法发送电子邮件?

这是为什么?我知道送货!如果无法发送,则抛出异常,但不应该发送也听取条件?

1 个答案:

答案 0 :(得分: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。