class FastJsonapi::Attribute

Attributes

conditional_proc[R]
key[R]
method[R]

Public Class Methods

new(key:, method:, options: {}) click to toggle source
# File lib/fast_jsonapi/attribute.rb, line 5
def initialize(key:, method:, options: {})
  @key = key
  @method = method
  @conditional_proc = options[:if]
end

Public Instance Methods

include_attribute?(record, serialization_params) click to toggle source
# File lib/fast_jsonapi/attribute.rb, line 21
def include_attribute?(record, serialization_params)
  if conditional_proc.present?
    conditional_proc.call(record, serialization_params)
  else
    true
  end
end
serialize(record, serialization_params, output_hash) click to toggle source
# File lib/fast_jsonapi/attribute.rb, line 11
def serialize(record, serialization_params, output_hash)
  if include_attribute?(record, serialization_params)
    output_hash[key] = if method.is_a?(Proc)
      method.arity.abs == 1 ? method.call(record) : method.call(record, serialization_params)
    else
      record.public_send(method)
    end
  end
end