开发者

Rails/ActionMailer/Postmark-rails sending same e-mail multiple times

开发者 https://www.devze.com 2023-03-20 10:43 出处:网络
I have a problem. My mailer sends the same e-mail 4 times. I\'m pretty sure I only call it once though. What could be the reason?

I have a problem. My mailer sends the same e-mail 4 times. I'm pretty sure I only call it once though. What could be the reason?

Running Rails 3.0.7 on Ruby 1.9.2 and Unicorn, if that matters.

Here is the mailer:

class NotificationMailer < ActionMailer::Base
  default :from => "herald@artistsnclients.com"

  def order_new(user, order)
    @user = user
    @order = order
    mail( :to => "#{user.name} <#{user.email}>", :subject => "You have one new order to review (##{order.id})" )
  end
end

What calls the mailer is a callback in the model Notification:

class Notification < ActiveRecord::Base
  attr_accessible :read, :user_id, :happening_type, :happening_id, :happening_status

  enum_attr :happening_status, %w(new approved rejected cancelled payed completed accepted new_post)

  belongs_to :user
  belongs_to :happening, :polymorphic => true

  after_create :send_email

  private

  def send_email
    # Send e-mail here
    if [:new, :approved, :rejected, :cancelled, :payed, :completed, :accepted].include? self.happening_status
      right_mailer = NotificationMailer.method("order_#{self.happening_status}".to_sym)
      right_mailer.call(self.user, self.happening).deliver
    elsif [:new_post].include? self.happening_status
      NotificationMailer.note_new(self.user, self.happening).deliver
    end
  end
end

The Notification object is created from a callback in the Note model:

class Note < ActiveRecord::Base
  ...
  after_create :notify_artist

  private

  def notify_artist
    self.notifications.create :read => false, :happening_status => :new, :user_id => self.artist_id
  end
end

Also, here is the part of the log that belongs to the controller from which the Notification model is created:

Started POST "/notes" for 178.8.127.86 at 2011-07-15 18:03:45 +0000
  Processing by NotesController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"8UhgV74SUZibcrowriqQZAketiALnkpHMhu0bkuZ4VQ=", "note"=>{"content"=>"Okaaay, *will do*", "order_id"=>"1"}, "commit"=>"Reply"}
  [1m[36mUser Load (0.1ms)[0m  [1mSELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1[0m
  [1m[35mSQL (0.1ms)[0m  BEGIN
  [1m[36mSQL (0.5ms)[0m  [1mdescribe `notes`[0m
  [1m[35mAREL (0.3ms)[0m  INSERT INTO `notes` (`user_id`, `order_id`, `content`, `created_at`, `updated_at`) VALUES (1, 1, 'Okaaay, *will do*', '2011-07-15 18:03:45', '2011-07-15 18:03:45')
  [1m[36mOrder Load (0.1ms)[0m  [1mSELECT `orders`.* FROM `orders` WHERE `orders`.`id` = 1 LIMIT 1[0m
  [1m[35mNotification Load (0.5ms)[0m  SELECT `notifications`.* FROM `notifications` WHERE (`notifications`.happening_id = 12 AND `notifications`.happening_type = 'Note') LIMIT 1
  [1m[36mSQL (0.9ms)[0m  [1mdescribe `notifications`[0m
  [1m[35mAREL (0.3ms)[0m  INSERT INTO `notifications` (`read`, `user_id`, `happening_id`, `happening_type`, `created_at`, `updated_at`, `happening_status`) VALUES (0, 2, 12, 'Note', '2011-07-15 18:03:45', '2011-07-15 18:03:45', 'new_post')
  [1m[36mUser Load (0.2ms)[0m  [1mSELECT `users`.* FROM `users` WHERE `users`.`id` = 2 LIMIT 1[0m
  [1m[35mNote Load (0.3ms)[0m  SELECT `notes`.* FROM `notes` WHERE `notes`.`id` = 12 LIMIT 1
Rendered notification_mailer/note_new.html.haml (3.6ms)

Sent mail to [MY E-MAIL] (2362ms)
Date: Fri, 15 Jul 2011 18:03:46 +0000
From: herald@artistsnclients.com
To: 开发者_Go百科Dummy <[MY E-MAIL]>
Message-ID: <4e208102724f_55c11225a4584d7@artistsnclients.mail>
Subject: New message in order #1
Mime-Version: 1.0
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: 7bit

<p>Hello Dummy,</p>
<p>There is a new message in your order #1.</p>
<blockquote>
  Okaaay, *will do*
</blockquote>
<hr>
<p>
  With lots and lots of love,
  <br>
  Artists&amp;Clients Staff
</p>
  [1m[36mSQL (564.1ms)[0m  [1mCOMMIT[0m
Redirected to http://dev.artistsnclients.com/orders/1
Completed 302 Found in 3623ms


Please try newer version of the gem named 0.9.8, I think we managed to fix that bug:

https://rubygems.org/gems/postmark

Let me know if it helped.

0

精彩评论

暂无评论...
验证码 换一张
取 消