A implementation of the Closure Table pattern for ActiveRecord models. This uses two tables to maintain the ancestor/descendant relationship for all branches of a particular model. For example, you might have web pages you want to represent in a nested hierarchy which would yield the following table structure:
- Page (i.e. pages)
- PageBranch (i.e. page_branches)
Assuming the following page hierarchy:
page_branches table would consist of the following data:
- Database integrity via the Closure Table pattern.
For a secure install, type the following from the command line (recommended):
gem cert --add <(curl -Ls https://www.alchemists.io/gem-public.pem) gem install lineage --trust-policy MediumSecurity
NOTE: A HighSecurity trust policy would be best but MediumSecurity enables signed gem verification while allowing the installation of unsigned dependencies since they are beyond the scope of this gem.
For an insecure install, type the following (not recommended):
gem install lineage
Add the following to your Gemfile:
Add the following to any model you wish to enable with lineage support:
To test, run:
bundle exec rspec spec
Read Semantic Versioning for details. Briefly, it means:
- Patch (x.y.Z) - Incremented for small, backwards compatible bug fixes.
- Minor (x.Y.z) - Incremented for new, backwards compatible public API enhancements and/or bug fixes.
- Major (X.y.z) - Incremented for any backwards incompatible public API changes.
Read CONTRIBUTING for details.