Arel Date Scopes
This gem is useful when you want to navigate through your records by years, months or days - for example, at news archive page.
-
AREL 2 date functions (DATE(), YEAR(), DAYOFMONTH() for MySQL, CAST(STRFTIME(…)) for SQLite)
-
AR 3 scopes.
Installation
Put following line in your Gemfile:
gem 'arel_date_scopes'
Pure AREL example:
Let the users table have created_at field.
users = Table[:users]
users.where(users[:created_at].year.eq(2009))
users.where(users[:created_at].month.gt(2))
users.where(users[:created_at].dayofmonth.in(1..20))
AR example:
Let the news table have created_at field and contain news for two years: 2008 and 2009.
class News < ActiveRecord::Base
date_scopes_for :created_at # Creates scopes for created_at field.
end
The News model gets the following scopes:
-
created_at_year_eq
-
created_at_month_eq
-
created_at_day_eq
-
created_at_years
-
created_at_months
-
created_at_days
-
ascend_by_created_at
-
descend_by_created_at
Usage example:
News.created_at_year_eq(2009).all
News.created_at_year_eq(2009).created_at_month_eq(5).all
News.descend_by_created_at.created_at_years.all.first['created_at_year'] # 2009
News.ascend_by_created_at.created_at_years.all_column # [2008, 2009]
TODO:
-
Create scopes through method_missing like searchlogic.