Class: JsonApi::Associations::Meta

Inherits:
Object
  • Object
show all
Defined in:
lib/json_api_ruby/associations/meta.rb

Constant Summary collapse

TO_ONE =
:one
TO_MANY =
:many
CARDINALITY =
[TO_ONE, TO_MANY]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, resource_class: nil, cardinality:) ⇒ Meta

Returns a new instance of Meta.



24
25
26
27
28
29
# File 'lib/json_api_ruby/associations/meta.rb', line 24

def initialize(name, resource_class: nil, cardinality:)
  @name = name.to_s
  validate_cardinality(cardinality)
  @cardinality = cardinality
  @explicit_resource_class = resource_class
end

Instance Attribute Details

#cardinalityObject (readonly)

Returns the value of attribute cardinality.



20
21
22
# File 'lib/json_api_ruby/associations/meta.rb', line 20

def cardinality
  @cardinality
end

#explicit_resource_classObject (readonly)

Returns the value of attribute explicit_resource_class.



22
23
24
# File 'lib/json_api_ruby/associations/meta.rb', line 22

def explicit_resource_class
  @explicit_resource_class
end

#nameObject (readonly)

The name of this relationship.

This name comes from the resource object that defines the relationship. Example:

class ArticleResource < JsonApi::Resource
  has_one :author # this is the name of this relationship
end


18
19
20
# File 'lib/json_api_ruby/associations/meta.rb', line 18

def name
  @name
end

Instance Method Details

#build_resources(options) ⇒ Object



37
38
39
40
41
42
43
44
45
# File 'lib/json_api_ruby/associations/meta.rb', line 37

def build_resources(options)
  if cardinality == TO_ONE
    relationship = ToOne.new(name, options.merge(explicit_resource_class: explicit_resource_class))
  else
    relationship = ToMany.new(name, options.merge(explicit_resource_class: explicit_resource_class))
  end
  relationship.build_resources(options)
  relationship
end

#validate_cardinality(cardinality) ⇒ Object



31
32
33
34
35
# File 'lib/json_api_ruby/associations/meta.rb', line 31

def validate_cardinality(cardinality)
  unless(CARDINALITY.include?(cardinality))
    fail UnknownCardinalityError.new
  end
end