class JSONAPI::Serializable::Relationship
Public Class Methods
new(exposures = {}, options = {}, &block)
click to toggle source
# File lib/jsonapi/serializable/relationship.rb, line 9 def initialize(exposures = {}, options = {}, &block) exposures.each { |k, v| instance_variable_set("@#{k}", v) } @_exposures = exposures @_options = options @_links = {} instance_eval(&block) end
Public Instance Methods
as_jsonapi(included)
click to toggle source
# File lib/jsonapi/serializable/relationship.rb, line 17 def as_jsonapi(included) {}.tap do |hash| hash[:links] = @_links if @_links.any? hash[:data] = linkage_data if included || @_include_linkage hash[:meta] = @_meta unless @_meta.nil? hash[:meta] = { included: false } if hash.empty? end end
Private Instance Methods
linkage_data()
click to toggle source
@api private
# File lib/jsonapi/serializable/relationship.rb, line 39 def linkage_data return @_linkage_block.call if @_linkage_block linkage_data = related_resources.map do |res| { type: res.jsonapi_type, id: res.jsonapi_id } end resources.respond_to?(:each) ? linkage_data : linkage_data.first end
resources()
click to toggle source
@api private
# File lib/jsonapi/serializable/relationship.rb, line 34 def resources @_resources ||= @_resources_block.call end