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
- #belongs_to? ⇒ Boolean
-
#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 |
# 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 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
#belongs_to? ⇒ Boolean
59 60 61 |
# File 'lib/jsonapi/relationship.rb', line 59 def belongs_to? false end |
#primary_key ⇒ Object
21 22 23 |
# File 'lib/jsonapi/relationship.rb', line 21 def primary_key @primary_key ||= resource_klass._primary_key end |
#relation_name(options) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/jsonapi/relationship.rb', line 37 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
25 26 27 |
# File 'lib/jsonapi/relationship.rb', line 25 def resource_klass @resource_klass ||= @parent_resource.resource_for(@class_name) end |
#table_name ⇒ Object
29 30 31 |
# File 'lib/jsonapi/relationship.rb', line 29 def table_name @table_name ||= resource_klass._table_name end |
#type ⇒ Object
33 34 35 |
# File 'lib/jsonapi/relationship.rb', line 33 def type @type ||= resource_klass._type.to_sym end |
#type_for_source(source) ⇒ Object
50 51 52 53 54 55 56 57 |
# File 'lib/jsonapi/relationship.rb', line 50 def type_for_source(source) if polymorphic? resource = source.public_send(name) resource.class._type if resource else type end end |