Class: JSONAPI::Relationship
- Inherits:
-
Object
- Object
- JSONAPI::Relationship
- Defined in:
- lib/jsonapi/relationship.rb
Defined Under Namespace
Instance Attribute Summary collapse
-
#acts_as_set ⇒ Object
readonly
Returns the value of attribute acts_as_set.
-
#always_include_linkage_data ⇒ Object
readonly
Returns the value of attribute always_include_linkage_data.
-
#class_name ⇒ Object
readonly
Returns the value of attribute class_name.
-
#eager_load_on_include ⇒ Object
readonly
Returns the value of attribute eager_load_on_include.
-
#foreign_key ⇒ Object
readonly
Returns the value of attribute foreign_key.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#parent_resource ⇒ Object
readonly
Returns the value of attribute parent_resource.
-
#polymorphic ⇒ Object
(also: #polymorphic?)
readonly
Returns the value of attribute polymorphic.
Instance Method Summary collapse
- #_exclude_links ⇒ Object
- #belongs_to? ⇒ Boolean
- #exclude_link?(link) ⇒ Boolean
- #exclude_links(exclude) ⇒ Object
-
#initialize(name, options = {}) ⇒ Relationship
constructor
A new instance of Relationship.
- #primary_key ⇒ Object
- #relation_name(options) ⇒ Object
- #resource_klass ⇒ Object
- #table_name ⇒ Object
- #type ⇒ Object
- #type_for_source(source) ⇒ Object
Constructor Details
#initialize(name, options = {}) ⇒ Relationship
Returns a new instance of Relationship.
7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/jsonapi/relationship.rb', line 7 def initialize(name, = {}) @name = name.to_s @options = @acts_as_set = .fetch(:acts_as_set, false) == true @foreign_key = [:foreign_key] ? [:foreign_key].to_sym : nil @parent_resource = [:parent_resource] @relation_name = .fetch(:relation_name, @name) @polymorphic = .fetch(:polymorphic, false) == true @always_include_linkage_data = .fetch(:always_include_linkage_data, false) == true @eager_load_on_include = .fetch(:eager_load_on_include, true) == true exclude_links(.fetch(:exclude_links, :none)) end |
Instance Attribute Details
#acts_as_set ⇒ Object (readonly)
Returns the value of attribute acts_as_set.
3 4 5 |
# File 'lib/jsonapi/relationship.rb', line 3 def acts_as_set @acts_as_set end |
#always_include_linkage_data ⇒ Object (readonly)
Returns the value of attribute always_include_linkage_data.
3 4 5 |
# File 'lib/jsonapi/relationship.rb', line 3 def always_include_linkage_data @always_include_linkage_data end |
#class_name ⇒ Object (readonly)
Returns the value of attribute class_name.
3 4 5 |
# File 'lib/jsonapi/relationship.rb', line 3 def class_name @class_name end |
#eager_load_on_include ⇒ Object (readonly)
Returns the value of attribute eager_load_on_include.
3 4 5 |
# File 'lib/jsonapi/relationship.rb', line 3 def eager_load_on_include @eager_load_on_include end |
#foreign_key ⇒ Object (readonly)
Returns the value of attribute foreign_key.
3 4 5 |
# File 'lib/jsonapi/relationship.rb', line 3 def foreign_key @foreign_key end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
3 4 5 |
# File 'lib/jsonapi/relationship.rb', line 3 def name @name end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
3 4 5 |
# File 'lib/jsonapi/relationship.rb', line 3 def @options end |
#parent_resource ⇒ Object (readonly)
Returns the value of attribute parent_resource.
3 4 5 |
# File 'lib/jsonapi/relationship.rb', line 3 def parent_resource @parent_resource end |
#polymorphic ⇒ Object (readonly) Also known as: polymorphic?
Returns the value of attribute polymorphic.
3 4 5 |
# File 'lib/jsonapi/relationship.rb', line 3 def polymorphic @polymorphic end |
Instance Method Details
#_exclude_links ⇒ Object
78 79 80 |
# File 'lib/jsonapi/relationship.rb', line 78 def _exclude_links @_exclude_links ||= [] end |
#belongs_to? ⇒ Boolean
61 62 63 |
# File 'lib/jsonapi/relationship.rb', line 61 def belongs_to? false end |
#exclude_link?(link) ⇒ Boolean
82 83 84 |
# File 'lib/jsonapi/relationship.rb', line 82 def exclude_link?(link) _exclude_links.include?(link.to_sym) end |
#exclude_links(exclude) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/jsonapi/relationship.rb', line 65 def exclude_links(exclude) case exclude when :default, "default" @_exclude_links = [:self, :related] when :none, "none" @_exclude_links = [] when Array @_exclude_links = exclude.collect {|link| link.to_sym} else fail "Invalid exclude_links" end end |
#primary_key ⇒ Object
23 24 25 |
# File 'lib/jsonapi/relationship.rb', line 23 def primary_key @primary_key ||= resource_klass._primary_key end |
#relation_name(options) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/jsonapi/relationship.rb', line 39 def relation_name() case @relation_name when Symbol # :nocov: @relation_name # :nocov: when String @relation_name.to_sym when Proc @relation_name.call() end end |
#resource_klass ⇒ Object
27 28 29 |
# File 'lib/jsonapi/relationship.rb', line 27 def resource_klass @resource_klass ||= @parent_resource.resource_for(@class_name) end |
#table_name ⇒ Object
31 32 33 |
# File 'lib/jsonapi/relationship.rb', line 31 def table_name @table_name ||= resource_klass._table_name end |
#type ⇒ Object
35 36 37 |
# File 'lib/jsonapi/relationship.rb', line 35 def type @type ||= resource_klass._type.to_sym end |
#type_for_source(source) ⇒ Object
52 53 54 55 56 57 58 59 |
# File 'lib/jsonapi/relationship.rb', line 52 def type_for_source(source) if polymorphic? resource = source.public_send(name) resource.class._type if resource else type end end |