我具有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
,但我不想访问数据库以单独保存每个日历事件,则此方法有效。
是否可以批量更新值并同时提交?