Class: JSONApi::ObjectSerializerDefinition

Inherits:
Object
  • Object
show all
Defined in:
lib/json_api/object_serializer_definition.rb

Class Method Summary collapse

Class Method Details

.attributes(*attrs) ⇒ Object



22
23
24
25
# File 'lib/json_api/object_serializer_definition.rb', line 22

def attributes(*attrs)
  @attributes ||= []
  @attributes |= attrs
end

.has_many(name, **config) ⇒ Object



46
47
48
49
# File 'lib/json_api/object_serializer_definition.rb', line 46

def has_many(name, **config)
  config[:to] = :many
  relationship(name, config)
end

.has_one(name, **config) ⇒ Object



41
42
43
44
# File 'lib/json_api/object_serializer_definition.rb', line 41

def has_one(name, **config)
  config[:to] = :one
  relationship(name, config)
end

.hashify(object, **options) ⇒ Object



11
12
13
14
# File 'lib/json_api/object_serializer_definition.rb', line 11

def hashify(object, **options)
  options = merge_options(**options)
  ObjectSerializer.new.hashify(object, **options)
end

.id_attribute(attr = @id_attribute) ⇒ Object



27
28
29
# File 'lib/json_api/object_serializer_definition.rb', line 27

def id_attribute(attr = @id_attribute)
  @id_attribute = attr
end

.inherited(specialization) ⇒ Object



16
17
18
19
20
# File 'lib/json_api/object_serializer_definition.rb', line 16

def inherited(specialization)
  specialization.attributes(*attributes)
  specialization.relationships(*relationships)
  specialization.id_attribute(id_attribute)
end

.relationship(name, **config) ⇒ Object



31
32
33
34
# File 'lib/json_api/object_serializer_definition.rb', line 31

def relationship(name, **config)
  config[:name] = name
  relationships(config)
end

.relationships(*configs) ⇒ Object



36
37
38
39
# File 'lib/json_api/object_serializer_definition.rb', line 36

def relationships(*configs)
  @relationships ||= []
  @relationships |= configs
end

.serialize(object, **options) ⇒ Object



6
7
8
9
# File 'lib/json_api/object_serializer_definition.rb', line 6

def serialize(object, **options)
  options = merge_options(**options)
  ObjectSerializer.new.serialize(object, **options)
end