class ViewModel::ActiveRecord::ReferencedCollectionUpdate::Parser

Public Instance Methods

append_action_schema() click to toggle source
# File lib/view_model/active_record/update_data.rb, line 347
def append_action_schema
  UpdateData::Schemas::REFERENCED_APPEND_ACTION
end
functional_update_schema() click to toggle source
# File lib/view_model/active_record/update_data.rb, line 343
def functional_update_schema
  UpdateData::Schemas::REFERENCED_COLLECTION_UPDATE
end
parse_contents(values) click to toggle source
# File lib/view_model/active_record/update_data.rb, line 359
def parse_contents(values)
  invalid_entries = values.reject { |h| ref_hash?(h) }

  if invalid_entries.present?
    raise ViewModel::DeserializationError::InvalidSyntax.new(
      "Appended/Updated entities must be specified as '#{ViewModel::REFERENCE_ATTRIBUTE}' style hashes." \
      "Invalid entries: #{invalid_entries}",
      blame_reference)
  end

  values.map do |x|
    ref = ViewModel.extract_reference_metadata(x)
    unless valid_reference_keys.include?(ref)
      raise ViewModel::DeserializationError::InvalidSharedReference.new(ref, blame_reference)
    end

    ref
  end
end
remove_action_schema() click to toggle source
# File lib/view_model/active_record/update_data.rb, line 351
def remove_action_schema
  UpdateData::Schemas::REFERENCED_REMOVE_ACTION
end
update_action_schema() click to toggle source
# File lib/view_model/active_record/update_data.rb, line 355
def update_action_schema
  UpdateData::Schemas::REFERENCED_UPDATE_ACTION
end

Private Instance Methods

functional_update_type() click to toggle source
# File lib/view_model/active_record/update_data.rb, line 385
def functional_update_type
  Functional
end
ref_hash?(value) click to toggle source
# File lib/view_model/active_record/update_data.rb, line 389
def ref_hash?(value)
  value.size == 1 && value.has_key?(ViewModel::REFERENCE_ATTRIBUTE)
end
replace_update_type() click to toggle source
# File lib/view_model/active_record/update_data.rb, line 381
def replace_update_type
  Replace
end