У меня есть интеграция с Календарем 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
, но я не хочу нажимать на базу данных, чтобы сохранить каждое событие календаря индивидуально.
Есть ли способ, которым я могу массово обновить значения и зафиксировать их прив то же время?