Sha256: a0e403ed190efab779253a11e8bfc907ad7521b01a495a99a12cb413555c0be3
Contents?: true
Size: 1.15 KB
Versions: 2
Compression:
Stored size: 1.15 KB
Contents
# frozen_string_literal: true module BrightSerializer class AttributeRelation < Attribute def initialize(key, serializer, condition, entity, options, &block) @serializer = serializer @options = options || {} add_entity_ref!(entity) super(key, condition, entity, &block) end def serialize(serializer_instance, object, params) return unless object merged_params = nil merged_params = (params || {}).merge(@options[:params] || {}) if params || @options[:params] value = attribute_value(serializer_instance, object, merged_params) class_serializer.new(value, params: merged_params, **@options).serializable_hash end private def class_serializer @class_serializer ||= @serializer.is_a?(String) ? Inflector.constantize(@serializer) : @serializer end def add_entity_ref!(entity) return unless entity if entity[:type].to_sym == :object && entity[:ref].nil? entity[:ref] = @serializer elsif entity[:type].to_sym == :array && entity.dig(:items, :ref).nil? entity[:items] ||= {} entity[:items][:ref] = @serializer end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
bright_serializer-0.4.1 | lib/bright_serializer/attribute_relation.rb |
bright_serializer-0.4.0 | lib/bright_serializer/attribute_relation.rb |