class FastJsonapi::Scalar

Attributes

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

Public Class Methods

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

Public Instance Methods

conditionally_allowed?(record, serialization_params) click to toggle source
# File lib/fast_jsonapi/scalar.rb, line 21
def conditionally_allowed?(record, serialization_params)
  if conditional_proc.present?
    FastJsonapi.call_proc(conditional_proc, record, serialization_params)
  else
    true
  end
end
serialize(record, serialization_params, output_hash) click to toggle source
# File lib/fast_jsonapi/scalar.rb, line 11
def serialize(record, serialization_params, output_hash)
  if conditionally_allowed?(record, serialization_params)
    if method.is_a?(Proc)
      output_hash[key] = FastJsonapi.call_proc(method, record, serialization_params)
    else
      output_hash[key] = record.public_send(method)
    end
  end
end