activerecord-time-scope
Add various time-related scopes for ActiveRecord!
Installation
Add the activerecord-time-scope gem to your Gemfile.
gem "activerecord-time-scope"
And run bundle install
.
Usage
Time
Auto
To create scopes for time-related columns of your ActiveRecord model such as 'created_at',
class Foo < ActiveRecord::Base
create_time_scopes
end
Then, these scopes will be available.
Foo.created_before 3.days.ago
Foo.created_after 3.days.ago
Foo.created_within 3.days.ago, 3.days.from_now
Any columns with _at
, _on
, _time
and _date
postfix are considered as time-related columns.
Manual
If the column name is not time-related, you can create the time scope manually.
class Foo < ActiveRecord::Base
create_time_scope :started, :created_at
end
Then, these scopes will be available.
Foo.started_before 3.days.ago
Foo.started_after 3.days.ago
Foo.started_within 3.days.ago, 3.days.from_now
Time Range
If you want scopes for time ranges, you can create it manually.
class Round < ActiveRecord::Base
create_time_range_scope :run, :start_at, :end_at
end
Then, these scopes will be available.
Round.run_before 3.days.ago
Round.run_after 3.days.ago
Round.run_within 3.days.ago, 3.days.from_now
will be available for the class!
Options
include_equal
Foo.created_before 3.days.ago, include_equal: true
Foo.created_after 3.days.ago, include_equal: true
Foo.created_within 3.days.ago, 2.days.ago, {include_equal: true}, {include_equal: false}
TODO
- Handle overwrapped cases
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
Copyright
Copyright (c) 2014 Daisuke Taniwaki. See LICENSE for details.