Массовое назначение атрибутов и сохранение записей в Rails 5 - PullRequest
0 голосов
/ 19 марта 2019

У меня есть интеграция с Календарем Google, и мне нужно обновить все события Календаря Google в моей собственной базе данных, когда пользователь обновляет свой календарь.

Я хочу назначить атрибут start и end изатем сохраните все события одновременно.

Соотношение:

User has_many CalendarEvents

Мой метод:

def handle_calendar_update(cal_events)
  cal_events.items.each do |e|
    next if e.try(:end).nil? || e.try(:start).nil?

    params = persistable_params(e)
    google_event = user.calendar_events.where(google_id: params[:google_id])
    if google_event.empty?
      create_google_event(params)
    else
      event = google_event.first
      @current_google_events.delete(event.id)

      #THIS IS WHERE I UPDATE EXISTING RECORD
      update_google_event(event, params)
    end
  end
  user.save!
end

def update_google_event(google_event, params)
  google_event.assign_attributes(start: params[:start], end: params[:end])
end

Но приведенное выше не сохраняетзаписей.Это работает, если я заменю assign_attributes на update, но я не хочу нажимать на базу данных, чтобы сохранить каждое событие календаря индивидуально.

Есть ли способ, которым я могу массово обновить значения и зафиксировать их прив то же время?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...