class ActiveModelSerializers::Adapter::Attributes

Public Class Methods

new(*) click to toggle source
Calls superclass method
# File lib/active_model_serializers/adapter/attributes.rb, line 6
def initialize(*)
  super
  instance_options[:fieldset] ||= ActiveModel::Serializer::Fieldset.new(fields_to_fieldset(instance_options.delete(:fields)))
end

Public Instance Methods

serializable_hash(options = nil) click to toggle source
# File lib/active_model_serializers/adapter/attributes.rb, line 11
def serializable_hash(options = nil)
  options = serialization_options(options)
  options[:fields] ||= instance_options[:fields]
  serialized_hash = serializer.serializable_hash(instance_options, options, self)

  self.class.transform_key_casing!(serialized_hash, instance_options)
end

Private Instance Methods

fields_to_fieldset(fields) click to toggle source
# File lib/active_model_serializers/adapter/attributes.rb, line 21
def fields_to_fieldset(fields)
  return fields if fields.nil?
  resource_fields = []
  relationship_fields = {}
  fields.each do |field|
    case field
    when Symbol, String then resource_fields << field
    when Hash then relationship_fields.merge!(field)
    else fail ArgumentError, "Unknown conversion of fields to fieldset: '#{field.inspect}' in '#{fields.inspect}'"
    end
  end
  relationship_fields.merge!(serializer.json_key.to_sym => resource_fields)
end