ActiveMerge
<img src=“https://badge.fury.io/rb/active_merge.png” alt=“Gem Version” /> <img src=“https://travis-ci.org/nepalez/active_merge.svg” alt=“Build Status” /> <img src=“https://codeclimate.com/github/nepalez/active_merge.png” /> <img src=“https://gemnasium.com/nepalez/active_merge.svg” alt=“Dependency Status” /> <img src=“https://coveralls.io/repos/nepalez/active_merge/badge.png” alt=“Coverage Status” />
Declares the ActiveMerge
module for extending ActiveRecord models.
Main usage
The module contains the merge_all
class method for merging class instances into the first one.
When merging a list of instances:
-
all “has_many” relatives are reattached to the instance with the lowest id
-
all the instances except for the first one (with the lowest id) are deleted
Example
class Post < ActiveRecord
extend ActiveMerge
has_many :comments
end
Post.all.merge_all
# This will merge all the posts into the first one.
# The other posts will be deleted after their comment are reattached
# to the first post.
Skipping validations and callbacks
You can use the validate: false
option.
With this option set any activerecord validation and callback are skipped.
Post.all.merge_all validate: false
Warning
Only activerecord validations and callbacks are skipped! Raising other errors (by database etc.) will cause all changes to roll back as before.
Version changes
See the CHANGELOG.
License
This project rocks and uses MIT LICENSE.