class ActiveModelSerializers::SerializableResource

Constants

ADAPTER_OPTION_KEYS

Attributes

adapter_opts[R]
resource[R]
serializer_opts[R]

Public Class Methods

new(resource, options = {}) click to toggle source

Primary interface to composing a resource with a serializer and adapter. @return the serializable_resource, ready for as_json/#to_json/#serializable_hash.

# File lib/active_model_serializers/serializable_resource.rb, line 17
def initialize(resource, options = {})
  @resource = resource
  @adapter_opts = options.select { |k, _| ADAPTER_OPTION_KEYS.include? k }
  @serializer_opts = options.reject { |k, _| ADAPTER_OPTION_KEYS.include? k }
end

Public Instance Methods

adapter() click to toggle source

NOTE: if no adapter is available, returns the resource itself. (i.e. adapter is a no-op)

# File lib/active_model_serializers/serializable_resource.rb, line 36
def adapter
  @adapter ||= find_adapter
end
Also aliased as: adapter_instance
adapter_instance()
Alias for: adapter
find_adapter() click to toggle source
# File lib/active_model_serializers/serializable_resource.rb, line 41
def find_adapter
  return resource unless serializer?
  adapter = catch :no_serializer do
    ActiveModelSerializers::Adapter.create(serializer_instance, adapter_opts)
  end
  adapter || resource
end
serialization_scope() click to toggle source
# File lib/active_model_serializers/serializable_resource.rb, line 27
def serialization_scope
  serializer_opts[:scope]
end
serialization_scope=(scope) click to toggle source
# File lib/active_model_serializers/serializable_resource.rb, line 23
def serialization_scope=(scope)
  serializer_opts[:scope] = scope
end
serialization_scope_name=(scope_name) click to toggle source
# File lib/active_model_serializers/serializable_resource.rb, line 31
def serialization_scope_name=(scope_name)
  serializer_opts[:scope_name] = scope_name
end
serializer() click to toggle source

Get serializer either explicitly :serializer or implicitly from resource Remove :serializer key from serializer_opts Remove :each_serializer if present and set as :serializer key

# File lib/active_model_serializers/serializable_resource.rb, line 56
def serializer
  @serializer ||=
    begin
      @serializer = serializer_opts.delete(:serializer)
      @serializer ||= ActiveModel::Serializer.serializer_for(resource, serializer_opts)

      if serializer_opts.key?(:each_serializer)
        serializer_opts[:serializer] = serializer_opts.delete(:each_serializer)
      end
      @serializer
    end
end
Also aliased as: serializer_class
serializer?() click to toggle source
# File lib/active_model_serializers/serializable_resource.rb, line 76
def serializer?
  use_adapter? && !serializer.nil?
end
serializer_class()
Alias for: serializer
serializer_instance() click to toggle source
# File lib/active_model_serializers/serializable_resource.rb, line 49
def serializer_instance
  @serializer_instance ||= serializer.new(resource, serializer_opts)
end
use_adapter?() click to toggle source

True when no explicit adapter given, or explicit appear is truthy (non-nil) False when explicit adapter is falsy (nil or false)

# File lib/active_model_serializers/serializable_resource.rb, line 72
def use_adapter?
  !(adapter_opts.key?(:adapter) && !adapter_opts[:adapter])
end