ActiveRecord Поиск по году, дню или месяцу в поле даты - PullRequest
64 голосов
/ 09 марта 2012

У меня есть модель ActiveRecord, которая имеет атрибут даты.Можно ли использовать этот атрибут даты для поиска по году, дню и месяцу:

Model.find_by_year(2012)
Model.find_by_month(12)
Model.find_by_day(1)

или просто можно найти find_by_date (2012-12-1)?Я мог бы избежать создания атрибутов Год, Месяц и День.

Ответы [ 11 ]

0 голосов
/ 07 июня 2017

Нет необходимости в методе extract, это работает как шарм в postgresql:

text_value = "1997" # or text_value = '1997-05-19' or '1997-05' or '05', etc
sql_string = "TO_CHAR(date_of_birth::timestamp, 'YYYY-MM-DD') ILIKE '%#{text_value.strip}%'"
YourModel.where(sql_string)
...