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 15 def initialize(resource, options = {}) @resource = resource @adapter_opts, @serializer_opts = options.partition { |k, _| ADAPTER_OPTION_KEYS.include? k }.map { |h| Hash[h] } 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 34 def adapter @adapter ||= find_adapter end
Also aliased as: adapter_instance
find_adapter()
click to toggle source
# File lib/active_model_serializers/serializable_resource.rb, line 39 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 25 def serialization_scope serializer_opts[:scope] end
serialization_scope=(scope)
click to toggle source
# File lib/active_model_serializers/serializable_resource.rb, line 21 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 29 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 54 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 74 def serializer? use_adapter? && !serializer.nil? end
serializer_instance()
click to toggle source
# File lib/active_model_serializers/serializable_resource.rb, line 47 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 70 def use_adapter? !(adapter_opts.key?(:adapter) && !adapter_opts[:adapter]) end