Sha256: 49f1c289cf83382ed88305f28b67ba90ff124e27f663d2f8e629018d016ce372

Contents?: true

Size: 1.11 KB

Versions: 29

Compression:

Stored size: 1.11 KB

Contents

module Spree
  module Api
    module V2
      module ResourceSerializerConcern
        extend ActiveSupport::Concern

        def self.included(base)
          serializer_base_name = base.to_s.sub(/^Spree::Api::V2::Platform::/, '').sub(/Serializer$/, '')
          model_klazz = "Spree::#{serializer_base_name}".constantize

          base.set_type model_klazz.json_api_type
          # include standard attributes
          base.attributes(*model_klazz.json_api_columns)
          # include money attributes
          display_getter_methods(model_klazz).each do |method_name|
            base.attribute(method_name) do |object|
              object.public_send(method_name).to_s
            end
          end
        end

        def self.display_getter_methods(model_klazz)
          model_klazz.new.methods.find_all do |method_name|
            next unless method_name.to_s.start_with?('display_')
            next if method_name.to_s.end_with?('=')
            next if [Spree::Product, Spree::Variant].include?(model_klazz) && method_name == :display_amount

            method_name
          end
        end
      end
    end
  end
end

Version data entries

29 entries across 29 versions & 3 rubygems

Version Path
spree_api-4.10.1 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
spree_api-4.10.0 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
spree_api-4.9.0 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
spree_api-4.8.3 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
spree_api-4.8.2 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
spree_api-4.7.3 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
spree_api-4.6.6 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
spree_api-4.5.5 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
spree_api-4.4.1 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
spree_api-4.5.4 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
spree_api-4.6.5 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
spree_api-4.7.2 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
spree_api-4.7.1 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
spree_api-4.6.4 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
spree_api-4.7.0 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
spree_api-4.6.3 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
spree_api-4.6.2 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
spree_api-4.6.1 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
spree_api-4.6.0 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
spree_api-4.5.3 app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb