0

简介:简而言之,此操作让您可以通过邮件邀请更多用户,您可以在一个字段中放置您的电子邮件,并且在提交时他们都会收到带有邮件邀请的电子邮件。

模型中有一个方法可以验证 project_invitation create 上的电子邮件,因此插入无效的电子邮件类型(如:eee@em、fff.com、bbb@.com),将不会保存 pinv 并且会引发 logger.error ..

问题:如何提取所有未通过验证的电子邮件并将其显示在通知中,例如“ Invtations sent, except eee@em, fff.com, bbb@.com, emails not valid”

谢谢,如果需要任何其他信息,请告诉我。

  def invite_users
    emails = params[:project_invitation][:emails]
    role = current_user.has_role?(:admin, @project) ? :admin : :default

    emails.to_s.split(',').each do |email|
      pinv = ProjectInvitation.new(params[:project_invitation], as: role)
      pinv.sender = current_user
      pinv.recipient_email = email
      pinv.recipient = nil
      pinv.project = @project

      if pinv.save
        ProjectMailer.delay.invitation(pinv)
      else
        logger.error("Failed to save project inv: #{pinv.errors.full_messages.join("\n")}")
      end
    end
  end
4

1 回答 1

0

在您的块内捕获电子邮件,在您的上方logger.error

  invalid_emails = []

  if pinv.save
    ProjectMailer.delay.invitation(pinv)
  else
    invalid_emails << email
    logger.error("Failed to save project inv: #{pinv.errors.full_messages.join("\n")}")
  end

  if invalid_emails.any?
    flash[:notice] = "Invalid emails: #{invalid_emails.join(', ')}"
  end

整个代码:

  def invite_users
    emails = params[:project_invitation][:emails]
    role = current_user.has_role?(:admin, @project) ? :admin : :default

    invalid_emails = []

    emails.to_s.split(',').each do |email|
      pinv = ProjectInvitation.new(params[:project_invitation], as: role)
      pinv.sender = current_user
      pinv.recipient_email = email
      pinv.recipient = nil
      pinv.project = @project

      if pinv.save
        ProjectMailer.delay.invitation(pinv)
      else
        invalid_emails << email
        logger.error("Failed to save project inv: #{pinv.errors.full_messages.join("\n")}")
      end
    end

    if invalid_emails.any?
      flash[:notice] = "Invalid emails: #{invalid_emails.join(', ')}"
    end
  end
于 2013-02-22T13:26:58.280 回答