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.