class ActiveModel::Serializer::Associations::HasOne

:nodoc:

def embeddable?

:nodoc:
def embeddable?
  if polymorphic? && associated_object.nil?
    false
  else
    true
  end
end

def plural_key

def plural_key
  if polymorphic?
    associated_object.class.to_s.pluralize.demodulize.underscore.to_sym
  else
    key.to_s.pluralize.to_sym
  end
end

def polymorphic?

def polymorphic?
  option :polymorphic
end

def polymorphic_key

def polymorphic_key
  associated_object.class.to_s.demodulize.underscore.to_sym
end

def serialize

def serialize
  object = associated_object
  if object && polymorphic?
    { 
      :type => polymorphic_key,
      polymorphic_key => find_serializable(object).serializable_hash
    }
  elsif object
    find_serializable(object).serializable_hash
  end
end

def serialize_ids

def serialize_ids
  object = associated_object
  if object && polymorphic?
    { 
      :type => polymorphic_key,
      :id => object.read_attribute_for_serialization(:id)
    }
  elsif object
    object.read_attribute_for_serialization(:id)
  else
    nil
  end
end

def serialize_many

def serialize_many
  object = associated_object
  value = object && find_serializable(object).serializable_hash
  value ? [value] : []
end