Class: AdequateSerialization::Rails::RelationSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/adequate_serialization/rails/relation_serializer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(relation) ⇒ RelationSerializer

Returns a new instance of RelationSerializer.



8
9
10
# File 'lib/adequate_serialization/rails/relation_serializer.rb', line 8

def initialize(relation)
  @relation = relation
end

Instance Attribute Details

#relationObject (readonly)

Returns the value of attribute relation.



6
7
8
# File 'lib/adequate_serialization/rails/relation_serializer.rb', line 6

def relation
  @relation
end

Instance Method Details

#as_json(*options) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/adequate_serialization/rails/relation_serializer.rb', line 12

def as_json(*options)
  # Very purposefully using #length here. If you use #empty? or #count and
  # the relation isn't yet loaded, it's going to trigger another query.
  # Since we're going to need to map over each of the results in order to
  # serialize it anyway, it's better just to load it now and avoid the
  # extra query.
  return [] if relation.length.zero?

  opts = Options.from(*options, multi_caching: true)
  decorator = Decorator.from(opts.attachments)

  response_for(opts, decorator)
end