No commit activity in last 3 years
No release in over 3 years
SQL date functions for AREL 2 + AR 3 scopes (such as created_at_year_eq)
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

~> 3.0.0
>= 2
 Project Readme

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.