Rails Actionmailer Sending Multiple Recipients

I'm having trouble getting Rails to send email to multiple users at once. I try to send a notification to several places registered on my site when the request corresponding to them is approved.

A pending request must be approved by the administrator. The @enquiry message is sent to the sender, which occurs when the email starts. Shown here in my query controller:

def approve
    @enquiry.approve
    redirect_to [:admin, @enquiry], notice: 'Enquiry is approved.'
    SupplierMailer.new_enquiry(@enquiry).deliver
 end

In my Supplier_mailer.rb, I have this method:

    def new_enquiry(enquiry)
      @enquiry = enquiry
      @enquiry.venues.each do |venue|
      mail(to: venue.supplier.user.email, subject: 'You have a new enquiry')
    end
  end

Currently, it sends only 1 email address, so it does not loop properly.

Models:

enquiry 
has_and_belongs_to_many :venues

supplier
has_many :venues
has_one :user

What did I do wrong?

thanks

+4
source share
1

, new_enquiry , deliver. , , , , .

to

emails = @enquiry.venues.map {|venue| venue.supplier.user.email}
mail(to: emails, subject: 'You have a new enquiry')

, Mailer :

def approve
  @enquiry.approve
  redirect_to [:admin, @enquiry], notice: 'Enquiry is approved.' 
  @enquiry.venues.each do |venue|
    SupplierMailer.new_enquiry(@enquiry, venue).deliver
  end
end

def new_enquiry(enquiry, venue)
  @enquiry = enquiry
  mail(to: venue.supplier.user.email, subject: 'You have a new enquiry')
end

, :

class SupplierMailer << ActionMailer::Base

  def self.new_enquiry(enquiry)
    @enquiry = enquiry
    mails = @enquiry.venues.map do |venue|
      mail(to: venue.supplier.user.email, subject: 'You have a new enquiry')
    end
    class << mails
      def deliver
        each(&:deliver)
      end
    end
    mails
  end
+9

All Articles