class ArDocStore::Types::EmbedsMany

Attributes

class_name[RW]

Public Class Methods

new(class_name) click to toggle source
# File lib/ar_doc_store/types/embeds_many.rb, line 8
def initialize(class_name)
  @class_name = class_name
end

Public Instance Methods

cast(values) click to toggle source
# File lib/ar_doc_store/types/embeds_many.rb, line 12
def cast(values)
  @class_name = @class_name.constantize if class_name.respond_to?(:constantize)
  collection = EmbeddedCollection.new
  values && values.each do |value|
    collection << if value.nil?
                    value
                  elsif value.kind_of?(class_name)
                    value
                  elsif value.respond_to?(:to_hash)
                    class_name.new value
                  else
                    nil
                  end
  end
  collection
end
changed_in_place?(raw_old_value, new_value) click to toggle source
# File lib/ar_doc_store/types/embeds_many.rb, line 49
def changed_in_place?(raw_old_value, new_value)
  serialize(new_value) != raw_old_value
end
deserialize(value) click to toggle source
# File lib/ar_doc_store/types/embeds_many.rb, line 45
def deserialize(value)
  cast(value)
end
serialize(values) click to toggle source
# File lib/ar_doc_store/types/embeds_many.rb, line 29
def serialize(values)
  return if values.nil?

  if values.respond_to?(:each)
    values.map { |value|
      if value.nil?
        nil
      elsif value.kind_of?(class_name)
        value.serializable_hash
      else
        cast(value).serializable_hash
      end
    }.compact
  end
end