Bigamy
Enable seamless Ruby-ness between ActiveRecord objects & MongoMapper documents
class User < ActiveRecord::Base
Bigamy.setup self
has_one_mm :doc
has_many_mm :photos
end
class Doc
include MongoMapper::Document
Bigamy.setup self
belongs_to_ar :user
end
class Photo
include MongoMapper::Document
Bigamy.setup self
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.setup can take any number of classes as arguments, and can be in an initializer like:
Bigamy.setup User, Doc
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.