DataMapper equivalent of ActiveRecord's reflect_on_all_associations method, but only so far as my particular use needed it


			
def reflect_on_all_associations
  # Datamapper, you're crazy...
  relationships.map { |name, relationship|
    if relationship.options[:min].nil?
      macro = :belongs_to
      if relationship.options[:class_name]
        # In a belongs_to, the side with the class name uses
        # the parent model, but child key for the foreign key...
        class_name = relationship.parent_model.to_s
        primary_key_name = relationship.child_key.entries.first.name
      else
        class_name = relationship.child_model.to_s
        primary_key_name = relationship.parent_key.entries.first.name
      end
    else
      macro = :has_one
      if relationship.options[:class_name]
        # but on the has_one side, it's the *child* model that
        # uses the child key for the foreign key.  Weirdness.
        class_name = relationship.child_model.to_s
        primary_key_name = relationship.child_key.entries.first.name
      else
        class_name = relationship.parent_model.to_s
        primary_key_name = relationship.parent_key.entries.first.name
      end
    end
    OpenStruct.new(
      :name => name,
      :class_name => class_name,
      :primary_key_name => primary_key_name,
      :macro => macro
    )
  }
end