class SimpleJsonapi::Definition::Relationship
Represents a single relationship on a resource
@!attribute [r] name
@return [Symbol]
@!attribute [r] cardinality
@return [:singular,:collection]
@!attribute [r] serializer_inferrer
@return [SerializerInferrer]
@!attribute [r] description
@return [String]
@!attribute [r] data_definition
@return [Proc]
Attributes
cardinality[R]
data_definition[R]
description[R]
name[R]
serializer_inferrer[R]
Public Class Methods
new(name, cardinality:, description: nil, **options, &block)
click to toggle source
@param name [Symbol] @param cardinality [Symbol] :singular
, :collection
@param description [String] @yieldparam resource [Object] @yieldreturn [Object,Array<Object>] The related resource or resources @option (see Definition::Base#initialize)
Calls superclass method
SimpleJsonapi::Definition::Concerns::HasMetaObject::new
# File lib/simple_jsonapi/definition/relationship.rb, line 25 def initialize(name, cardinality:, description: nil, **options, &block) super unless %i[singular collection].include?(cardinality) raise ArgumentError, "Cardinality must be :singular or :collection" end @name = name.to_sym @cardinality = cardinality.to_sym @description = description.to_s.presence @serializer_inferrer = SimpleJsonapi::SerializerInferrer.wrap(options[:serializer]) instance_eval(&block) if block_given? data { |resource| resource.public_send(name) } unless data_definition end
Public Instance Methods
collection?()
click to toggle source
# File lib/simple_jsonapi/definition/relationship.rb, line 57 def collection? cardinality == :collection end
data(&block)
click to toggle source
@return [void]
# File lib/simple_jsonapi/definition/relationship.rb, line 49 def data(&block) @data_definition = block end
singular?()
click to toggle source
# File lib/simple_jsonapi/definition/relationship.rb, line 53 def singular? cardinality == :singular end
Private Instance Methods
initialize_dup(new_def)
click to toggle source
Calls superclass method
SimpleJsonapi::Definition::Concerns::HasMetaObject#initialize_dup
# File lib/simple_jsonapi/definition/relationship.rb, line 42 def initialize_dup(new_def) super # name and cardinality are symbols, can't be duped # serializer_inferrer doesn't need to be duped? end