Reflections
Given an ActiveRecord object, it re-maps relationships to another object
of the same class. Useful for reconciling database with accounts for same user, etc.
Installation
Add this line to your application's Gemfile:
gem 'reflections'
And then execute:
$ bundle
Or install it yourself as:
$ gem install reflections
Usage
user1 = User.create
user2 = User.create
Widget.create user: user1
OtherClass.create user: user1
user1.map_associations_to user2
you can optionally control the associations
user1.map_associations_to(user2, types: %w(belongs_to has_and_belongs_to_many))
you can optionally control the updating of the associations
or create reports by passing a block
user1.map_associations_to(user2) do |record, association|
puts "Remapping #{association.macro} for #{record} from #{user1} to #{user2}"
false # don't actually do update
end
you can also control the classes remapped with :only and :exclude
user1.map_associations_to(user2, only: [Widget])
user1.map_associations_to(user2, except: [OtherClass])
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request