class FunWithJsonAPi::ActiveModelSerializers::DeserializerConfigBuilder

Builds an options hash for ActiveModelSerializers::Deserialization.jsonapi_parse

Attributes

deserializer[R]

Public Class Methods

build(deserializer) click to toggle source
# File lib/fun_with_json_api/active_model_serializers/deserializer_config_builder.rb, line 5
def self.build(deserializer)
  new(deserializer).build
end
new(deserializer) click to toggle source
# File lib/fun_with_json_api/active_model_serializers/deserializer_config_builder.rb, line 13
def initialize(deserializer)
  @deserializer = deserializer
end

Public Instance Methods

build() click to toggle source
# File lib/fun_with_json_api/active_model_serializers/deserializer_config_builder.rb, line 17
def build
  {
    only: build_only_values,
    keys: build_keys_value
  }
end

Protected Instance Methods

build_keys_value() click to toggle source
# File lib/fun_with_json_api/active_model_serializers/deserializer_config_builder.rb, line 31
def build_keys_value
  Hash[
    attribute_key_values(deserializer.attributes) +
    attribute_key_values(deserializer.relationships)
  ]
end
build_only_values() click to toggle source
# File lib/fun_with_json_api/active_model_serializers/deserializer_config_builder.rb, line 26
def build_only_values
  attribute_only_values(deserializer.attributes) +
    attribute_only_values(deserializer.relationships)
end

Private Instance Methods

attribute_key_values(attributes_or_relationships) click to toggle source
# File lib/fun_with_json_api/active_model_serializers/deserializer_config_builder.rb, line 44
def attribute_key_values(attributes_or_relationships)
  attributes_or_relationships.select { |a| a.name != a.as }
                             .map { |a| [a.name, a.as] }
end
attribute_only_values(attributes_or_relationships) click to toggle source
# File lib/fun_with_json_api/active_model_serializers/deserializer_config_builder.rb, line 40
def attribute_only_values(attributes_or_relationships)
  attributes_or_relationships.map(&:name)
end