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.