Консультация о том, как получить информацию о пользователе

Я создал форму в виде плагина, которая ищет пользователя в поле пользователей, которое я определил независимо.

Я использовал Web API для хранения информации о пользователях во внешней базе данных (AWS DynamoDB) и извлечения оттуда данных для поиска.

class DiscourseUserSearchController < ApplicationController
  def index
  end

  def search
    dynamodb = Aws::DynamoDB::Client.new(
      access_key_id: ENV['ACCESS_KEY_ID'],
      secret_access_key: ENV['SECRET_ACCESS_KEY'],
      region: AWS_REGION
    )

    scan_condition = {
      table_name: "DiscourseUserInformation"
    }
    result = dynamodb.scan(scan_condition)

    result = result.items
    Rails.logger.info result
    data = result.map do |user_data|
      user = User.find(user_data['UserID'])
      user_data['avatar_template'] = user.avatar_template
      user_data['username'] = user.username
      next user_data

    end

    render status: 200, json: { status: 200, data: data }
  end
end

Вышеуказанный код получает всех пользователей при открытии страницы и передаёт их в Angular.

Это работает нормально, но время ответа составляет 3500 миллисекунд, что не очень желательно (около 1400 искомых пользователей).

Я думаю, что проблема в том, что я вызываю User.find(user_data['UserID']) внутри цикла, но не могу придумать, как это улучшить.

Мне нужно отображать карточки пользователей, поэтому, полагаю, получение данных о пользователях на Ruby необходимо, но буду рад получить предложения, как ускорить этот процесс.

User.find_by_sql("select * from users where id in (#{user_ids.join(',')})")

Спасибо. Похоже, это будет решено.

Значит, этого было достаточно? Вы также можете сделать что-то вроде

user_ids=user_data.pluck(:UserID)

Спасибо!
Я не был знаком с Ruby, поэтому сделал это с помощью грязного кода, но постараюсь улучшить его так, как вы предлагаете!