class AbcJsonapi::Relationship
Attributes
block[R]
model[R]
relationship[R]
type[R]
Public Class Methods
new(model:, relationship:, type:, block:)
click to toggle source
# File lib/abc_jsonapi/relationship.rb, line 5 def initialize(model:, relationship:, type:, block:) @model = model @relationship = relationship @type = type @block = block end
Public Instance Methods
serializable_hash()
click to toggle source
# File lib/abc_jsonapi/relationship.rb, line 12 def serializable_hash case type when :has_one { data: serialize_has_one } when :has_many { data: serialize_has_many } when :belongs_to { data: serialize_belongs_to } else { data: nil } end end
serialize_belongs_to()
click to toggle source
# File lib/abc_jsonapi/relationship.rb, line 45 def serialize_belongs_to data = {} id = model.public_send("#{relationship}_id") return if id.blank? data[:id] = id.to_s data[:type] = Helpers.pluralize_if_necessary(relationship.to_s).to_sym data end
serialize_has_many()
click to toggle source
# File lib/abc_jsonapi/relationship.rb, line 34 def serialize_has_many rels = block.present? ? block.call(model) : model.public_send(relationship) data = rels.map do |relation| { id: relation.id.to_s, type: Helpers.pluralize_if_necessary(relationship.to_s).to_sym } end data end
serialize_has_one()
click to toggle source
# File lib/abc_jsonapi/relationship.rb, line 25 def serialize_has_one data = {} rel = model.public_send(relationship) return if rel.nil? data[:id] = rel.id.to_s data[:type] = Helpers.pluralize_if_necessary(relationship.to_s).to_sym data end