class ArDocStore::Types::EmbedsOne

Attributes

class_name[RW]

Public Class Methods

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

Public Instance Methods

cast(value) click to toggle source
# File lib/ar_doc_store/types/embeds_one.rb, line 12
def cast(value)
  @class_name = @class_name.constantize if class_name.respond_to?(:constantize)
  return if value.nil?

  if value.kind_of?(class_name)
    value
  elsif value.respond_to?(:to_hash)
    class_name.new value
  end
end
changed_in_place?(raw_old_value, new_value) click to toggle source
# File lib/ar_doc_store/types/embeds_one.rb, line 37
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_one.rb, line 33
def deserialize(value)
  cast(value)
end
serialize(value) click to toggle source
# File lib/ar_doc_store/types/embeds_one.rb, line 23
def serialize(value)
  return if value.nil?

  if value.kind_of?(class_name)
    value.serializable_hash
  else
    cast(value).serializable_hash
  end
end