Bigamy

Enable seamless Ruby-ness between ActiveRecord objects & MongoMapper documents

class User < ActiveRecord::Base

has_one_mm :doc
has_many_mm :photos

end

class Doc

include MongoMapper::Document

belongs_to_ar :user

end

class Photo

include MongoMapper::Document

belongs_to_ar :user

end

Bigamy sets foreign keys upon assignment. It doesn’t keep track of dirty children. It doesn’t allow you to operate with new records. So when you do:

@user.doc = @doc

  • @user has to be saved already.

  • @doc has to be saved already.

  • @doc will have it’s user_id attribute updated immediately.

When you do:

@user.photos = Photo.all

  • every Photo document will have it’s user_id attribute set immediately

Options

The available class methods are:

For AR:

belongs_to_mm
has_one_mm
has_many_mm

For MM:

belongs_to_ar
has_one_ar
has_many_ar

All class methods take :foreign_key, :class, and :primary_key options as a hash

Setup

Bigamy installs itself into MongoMapper and ActiveRecord automatically.

License

Bigmay is released under the MIT license.

It’s developed by Ryan Angilly and released with the permission of MyPunchbowl.com

Support

Just email me at [email protected] with questions, bugs, or patches.