0

イントロ:要するに、このアクションでは、より多くのユーザーをメールで招待できます。メールを送信するフィールドがあり、送信すると、すべてのユーザーにメールで招待されたメールが届きます。

model_invitation createの電子メールを検証するメソッドがモデルにあり、無効な電子メールタイプ(eee @ em、fff.com、bbb @ .comなど)を挿入すると、pinvは保存されず、logger.errorが発生します。 ..

問題:検証に合格しなかったすべての電子メールを抽出し、「eee @ em、fff.com、bbb @ .com、電子メールが無効です。を除いて、送信された招待状」などの通知に表示するにはどうすればよいですか。

他に情報が必要な場合はお知らせください。

  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 に答える