class JSONApi::RelationshipSerializer
Public Instance Methods
as_json(object, **options)
click to toggle source
# File lib/json_api/relationship_serializer.rb, line 5 def as_json(object, **options) serializer = (options[:to] == :many ? ToManySerializer : ToOneSerializer).new data = serializer.data_for(object, options) links = serializer.links_for(object, options) result = {} result[:data] = data unless data.nil? || data.empty? result[:links] = links unless links.nil? || links.empty? if result.empty? nil else result end end
Protected Instance Methods
key_base_for(options)
click to toggle source
# File lib/json_api/relationship_serializer.rb, line 35 def key_base_for(options) options[:name].to_s.singularize end
key_for(options)
click to toggle source
# File lib/json_api/relationship_serializer.rb, line 39 def key_for(options) key_base_for(options) end
relationship_for(object, **options)
click to toggle source
# File lib/json_api/relationship_serializer.rb, line 43 def relationship_for(object, **options) object.send(options[:key] || key_for(options)) end
resource_identifier_for(type_name, id)
click to toggle source
# File lib/json_api/relationship_serializer.rb, line 47 def resource_identifier_for(type_name, id) return nil if id.nil? || id == "" { type: Utils.canonicalize_type_name(type_name), id: Utils.canonicalize_id(id) } end
type_for(object, options)
click to toggle source
# File lib/json_api/relationship_serializer.rb, line 25 def type_for(object, options) if options[:polymorphic] foreign_type_key = options[:foreign_type_key] || "#{key_base_for(options)}_type" object.send(foreign_type_key) else options[:type] || options[:name] end end