Class: JSONAPIonify::Api::Relationship

Inherits:
Object
  • Object
show all
Extended by:
Blocks, JSONAPIonify::Autoload
Includes:
Documentation
Defined in:
lib/jsonapionify/api/relationship.rb

Direct Known Subclasses

Many, One

Defined Under Namespace

Modules: Blocks, Documentation Classes: Many, One

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from JSONAPIonify::Autoload

autoload_all, eager_load!, unloaded

Methods included from Blocks

append_class, extended, prepend_class

Methods included from Documentation

#documentation_object, #options_json

Constructor Details

#initialize(owner, name, resource: nil, includable: false, resolve: proc { |name, owner| owner.send(name) }, &block) ⇒ Relationship

Returns a new instance of Relationship.



68
69
70
71
72
73
74
75
# File 'lib/jsonapionify/api/relationship.rb', line 68

def initialize(owner, name, resource: nil, includable: false, resolve: proc { |name, owner| owner.send(name) }, &block)
  @class_proc = block || proc {}
  @owner      = owner
  @name       = name
  @includable = includable
  @resource   = resource || name
  @resolve    = resolve
end

Instance Attribute Details

#class_procObject (readonly)

Returns the value of attribute class_proc.



66
67
68
# File 'lib/jsonapionify/api/relationship.rb', line 66

def class_proc
  @class_proc
end

#nameObject (readonly)

Returns the value of attribute name.



66
67
68
# File 'lib/jsonapionify/api/relationship.rb', line 66

def name
  @name
end

#ownerObject (readonly)

Returns the value of attribute owner.



66
67
68
# File 'lib/jsonapionify/api/relationship.rb', line 66

def owner
  @owner
end

#resolveObject (readonly)

Returns the value of attribute resolve.



66
67
68
# File 'lib/jsonapionify/api/relationship.rb', line 66

def resolve
  @resolve
end

Instance Method Details

#includable?Boolean

Returns:



96
97
98
# File 'lib/jsonapionify/api/relationship.rb', line 96

def includable?
  !!@includable
end

#resourceObject



92
93
94
# File 'lib/jsonapionify/api/relationship.rb', line 92

def resource
  owner.api.resource(@resource)
end

#resource_classObject



77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/jsonapionify/api/relationship.rb', line 77

def resource_class
  @resource_class ||= begin
    rel = self
    Class.new(resource) do
      define_singleton_method(:rel) do
        rel
      end

      rel.class_prepends.each { |prepend| class_eval &prepend }
      class_eval(&rel.class_proc)
      rel.class_appends.each { |append| class_eval &append }
    end
  end
end