Provides a set of helper methods for dealing with chronological records that have common primary key and date columns denoting when the record is active (example: Oracle EBS tables).
To add the helper methods, invoke has_chronological_records
method on your ActiveRecord model:
class Employee < ActiveRecord::Base
has_chronological_records
end
This will assume you have start_date
and end_date
columns on the model. To change the column names, pass them as arguments:
class Employee < ActiveRecord::Base
has_chronological_records :start_date, :end_date
end
Following scopes are defined at class level that return all records matching specific condition:
Class.current
- records valid at current dateClass.effective_at(date)
- records valid at given date
Following instance methods are defined for navigation between versions or record. Can return nil if no version matches the condition.
instance.current
- version of instance valid at current dateinstance.effective_at(date)
- version of instance valid at given dateinstance.earliest
- first version of recordinstance.latest
- last version of recordinstance.previous
- version before the one method is being called oninstance.next
- version after the one method is being called on
Additonally, following helper methods are available:
instance.current?
- checks whether instance is valid at current date
Add the following line to your Gemfile
gem 'activerecord_chronological_records'
and run the bundle install
command.
- Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
- Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
- Fork the project.
- Start a feature/bugfix branch.
- Commit and push until you are happy with your contribution.
- Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
- Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
Copyright (c) 2012 Toms Mikoss. See LICENSE.txt for further details.