class JSONAPI::Path
Attributes
resource_klass[R]
segments[R]
Public Class Methods
new(resource_klass:, path_string:, ensure_default_field: true, parse_fields: true)
click to toggle source
# File lib/jsonapi/path.rb, line 4 def initialize(resource_klass:, path_string:, ensure_default_field: true, parse_fields: true) @resource_klass = resource_klass current_resource_klass = resource_klass @segments = path_string.to_s.split('.').collect do |segment_string| segment = PathSegment.parse(source_resource_klass: current_resource_klass, segment_string: segment_string, parse_fields: parse_fields) current_resource_klass = segment.resource_klass segment end if ensure_default_field && parse_fields && @segments.last.is_a?(PathSegment::Relationship) last = @segments.last @segments << PathSegment::Field.new(resource_klass: last.resource_klass, field_name: last.resource_klass._primary_key) end end
Public Instance Methods
last_relationship()
click to toggle source
# File lib/jsonapi/path.rb, line 35 def last_relationship if @segments.last.is_a?(PathSegment::Relationship) @segments.last else @segments[-2] end end
relationship_path_string()
click to toggle source
# File lib/jsonapi/path.rb, line 31 def relationship_path_string relationship_segments.collect(&:to_s).join('.') end
relationship_segments()
click to toggle source
# File lib/jsonapi/path.rb, line 27 def relationship_segments @segments.select {|p| p.is_a?(PathSegment::Relationship)} end