批量分配属性并将记录保存在Rails 5中

时间:2019-03-19 16:45:26

标签: ruby-on-rails ruby activerecord ruby-on-rails-5

我具有Google日历集成,并且我需要在用户刷新日历时更新自己数据库中的所有Google日历事件。

我想分配startend属性,然后同时保存所有事件。

关系是:

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,但我不想访问数据库以单独保存每个日历事件,则此方法有效。

是否可以批量更新值并同时提交?

0 个答案:

没有答案