class TheGrid::Api::Command::BatchUpdate
Public Instance Methods
configure(relation, params)
click to toggle source
# File lib/the_grid/api/command/batch_update.rb, line 3 def configure(relation, params) {}.tap do |o| o[:items] = params.fetch(:items, []).reject{ |item| item['id'].to_i <= 0 } raise ArgumentError, "There is nothing to update" if o[:items].blank? end end
run_on(relation, params)
click to toggle source
# File lib/the_grid/api/command/batch_update.rb, line 10 def run_on(relation, params) record_ids = params[:items].map{ |row| row['id'] } primary_key = relation.scoped.table.primary_key records = relation.where(primary_key.in(record_ids)).index_by(&primary_key.name.to_sym) params[:items].map do |row| record = records[row['id'].to_i] record.tap{ |r| r.update_attributes(row.except('id')) } unless record.nil? end.compact end