module ActiveModelSerializers::Adapter::JsonApi::Deserialization

Public Instance Methods

parse_nested_attributes(assoc_name, assoc_data, options) click to toggle source
# File lib/active_model_serializers/jsonapi_embedded_records_deserializer.rb, line 30
def parse_nested_attributes(assoc_name, assoc_data, options)
  data =
    if assoc_data.is_a?(Array)
      assoc_data.map { |ri| parse({ 'data' => ri }, options) }
    else
      parse({ 'data' => assoc_data }, options)
    end
  { "#{assoc_name}_attributes".to_sym => data }
end
parse_relationship(assoc_name, assoc_data, options) click to toggle source
# File lib/active_model_serializers/jsonapi_embedded_records_deserializer.rb, line 13
def parse_relationship(assoc_name, assoc_data, options)
  prefix_key = field_key(assoc_name, options).to_s.singularize
  hash =
    if (options[:embedded] || []).include?(assoc_name.to_sym)
      parse_nested_attributes(assoc_name, assoc_data, options)
    elsif assoc_data.is_a?(Array)
      { "#{prefix_key}_ids".to_sym => assoc_data.map { |ri| ri['id'] } }
    else
      { "#{prefix_key}_id".to_sym => assoc_data ? assoc_data['id'] : nil }
    end

  polymorphic = (options[:polymorphic] || []).include?(assoc_name.to_sym)
  hash["#{prefix_key}_type".to_sym] = assoc_data['type'] if polymorphic

  hash
end