module Hat::Nesting::JsonSerializer

Private Class Methods

included(serializer_class) click to toggle source
# File lib/hat/nesting/json_serializer.rb, line 39
def self.included(serializer_class)
  JsonSerializerDsl.apply_to(serializer_class)
end

Public Instance Methods

as_json(*args) click to toggle source
# File lib/hat/nesting/json_serializer.rb, line 13
def as_json(*args)

  result[root_key] = Array(serializable).map do |serializable_item|
    serializer = self.class.new(serializable_item, { result: {} })
    serializer.includes(*relation_includes).serialize
  end

  result.merge({ meta: meta_data.merge(includes_meta_data) })
end
serialize() click to toggle source
# File lib/hat/nesting/json_serializer.rb, line 23
def serialize
  assert_id_present(serializable)
  attribute_hash.merge(relation_loader.relation_hash)
end

Private Instance Methods

relation_loader() click to toggle source
# File lib/hat/nesting/json_serializer.rb, line 30
def relation_loader
  @relation_loader ||= Relationloader.new({
    serializable: serializable,
    has_manys: has_manys,
    has_ones: has_ones,
    relation_includes: relation_includes
  })
end