向所有用户

时间:2015-06-08 09:43:26

标签: ruby-on-rails email

我想在我的Rails应用程序上发布文章时发送通知邮件

梅勒类

class AdminMailer < ApplicationMailer
 def notification_mail(user)
   @user = user
   mail(to: @user.email, subject: '**TEST**')
 end
end

控制器

def create
@idee = Idee.new(idee_params)
users = User.all
respond_to do |format|
  if @idee.save
    users.each do |user|
      AdminMailer.notification_mail(user).deliver_now
    end
    format.html { redirect_to @idee, notice: 'Votre idée a bien été publiée.' }
    format.json { render :show, status: :created, location: @idee }
  else
    format.html { render :new }
    format.json { render json: @idee.errors, status: :unprocessable_entity }
  end
end

问题在于它只向一个用户发送电子邮件而我不知道原因。有没有办法解决这个问题并向所有用户发送电子邮件?

2 个答案:

答案 0 :(得分:1)

或者你可以尝试这个

Idee.rb

after_create :send_email_to_users

def send_email_to_users
  User.all.each do |user|
    AdminMailer.notification_mail(user).deliver_now    
  end
end

答案 1 :(得分:0)

将其更改为实例变量:

def create
  @idee = Idee.new(idee_params)
  @users = User.all
  respond_to do |format|
    if @idee.save
      @users.each do |user|
        AdminMailer.notification_mail(user).deliver_now
      end
      format.html { redirect_to @idee, notice: 'Votre idée a bien été publiée.' }
      format.json { render :show, status: :created, location: @idee }
    else
      format.html { render :new }
      format.json { render json: @idee.errors, status: :unprocessable_entity }
    end
  end
end