class JsonApiModel::Associations::Base
Attributes
base_class[RW]
key[RW]
name[RW]
opts[RW]
Public Class Methods
new( base_class, name, opts = {} )
click to toggle source
# File lib/json_api_model/associations/base.rb, line 8 def initialize( base_class, name, opts = {} ) self.name = name self.opts = opts self.key = idify( base_class ) self.base_class = base_class validate_opts! end
Public Instance Methods
association_class()
click to toggle source
# File lib/json_api_model/associations/base.rb, line 25 def association_class @associated_class ||= opts[:class] || opts[:class_name]&.constantize || derived_class end
fetch( instance )
click to toggle source
# File lib/json_api_model/associations/base.rb, line 17 def fetch( instance ) process association_class.send( action, query( instance ) ) end
json_relationship?()
click to toggle source
# File lib/json_api_model/associations/base.rb, line 21 def json_relationship? association_class < JsonApiModel::Model end
process( results )
click to toggle source
# File lib/json_api_model/associations/base.rb, line 31 def process( results ) results end
Protected Instance Methods
additional_options()
click to toggle source
# File lib/json_api_model/associations/base.rb, line 49 def additional_options [] end
derived_class()
click to toggle source
# File lib/json_api_model/associations/base.rb, line 41 def derived_class name.to_s.singularize.classify.constantize end
idify( class_name )
click to toggle source
# File lib/json_api_model/associations/base.rb, line 37 def idify( class_name ) "#{class_name.to_s.demodulize.underscore}_id" end
supported_options()
click to toggle source
# File lib/json_api_model/associations/base.rb, line 45 def supported_options [ :class, :class_name ] + additional_options end
validate_opts!()
click to toggle source
# File lib/json_api_model/associations/base.rb, line 53 def validate_opts! if name.to_s == "object" raise "#{base_class}: 'object_id' is a reserved keyword in ruby and cannot be overridden" end (opts.keys - supported_options).each do | opt | raise "#{base_class}: #{opt} is not supported." end end