class Muesli::Serializers::Base

Attributes

whitelisted_attributes[RW]
model[RW]
user[RW]

Public Class Methods

new(model) click to toggle source
# File lib/muesli/serializers/base.rb, line 10
def initialize(model)
  self.model = model
end

Public Instance Methods

serialize() click to toggle source
# File lib/muesli/serializers/base.rb, line 14
def serialize
  return serialize_from_model(self.class.whitelisted_attributes || [])
end

Protected Instance Methods

map_from_source(attribute_source, attr) click to toggle source
# File lib/muesli/serializers/base.rb, line 30
def map_from_source(attribute_source, attr)
  if attribute_source.respond_to?(attr)
    begin
      [ attr, serialize_value( attribute_source.send(attr) ) ]
    rescue ActiveModel::MissingAttributeError
      nil
    end
  end
end
serialize_attributes(attribute_source, attribute_list) click to toggle source
# File lib/muesli/serializers/base.rb, line 24
def serialize_attributes(attribute_source, attribute_list)
  return attribute_list.map do |attr|
    map_from_source(attribute_source, attr)
  end.compact.to_h
end
serialize_from_model(attribute_list) click to toggle source
# File lib/muesli/serializers/base.rb, line 20
def serialize_from_model(attribute_list)
  serialize_attributes(model, attribute_list)
end
serialize_value(value) click to toggle source
# File lib/muesli/serializers/base.rb, line 40
def serialize_value(value)
  if Muesli::AttributeSerializers.const_defined?(value.class.to_s, false)
    return Muesli::AttributeSerializers.const_get(value.class.to_s, false).new(value).serialize
  else
    return Muesli::AttributeSerializers::Base.new(value).serialize
  end
end