Rails邮件功能两次发送电子邮件

时间:2012-08-22 09:24:10

标签: ruby-on-rails ruby email

下面的代码发送了两封电子邮件,两封邮件都有相同的邮件ID,但我怀疑它可能是我的代码。

控制器:

 @payment.update_attributes(:status => "Confirmed")

付款模式:

before_save :check_if_confirmed
before_update :check_if_confirmed

def check_if_confirmed
  if status == "Confirmed"
    tickets.each do |t|
     t.status = "Confirmed"
     t.save
  end
    Emailer.payment(self,user.id,user.full_name, user.email, self.total, self.id).deliver
end

Emailer.rb

def payment(payment, user_id, buyer_name, email = payment.user.email, price, payment_id)
....
   mail(:from => "John Smith <john@smith.com>", :to => email, :subject => "Whatever")

电子邮件将被发送一次,然后立即再次发送。收据很自然,我需要阻止它被发送两次。

思想?

2 个答案:

答案 0 :(得分:3)

每次保存记录时都会触发

before_save :check_if_confirmed(即使已创建记录)

before_update :check_if_confirmed在已创建记录并且数据刚刚更新时触发。

您正在使用错误的回调,即两次发送邮件。 before_save就足够了。

答案 1 :(得分:0)

由于回调,这种情况正在发生 before_save:check_if_confirmed before_update:check_if_confirmed

只使用其中一个