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
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_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