Rails: поиск по дню недели с отметкой времени - PullRequest
2 голосов
/ 29 марта 2010

Мне нужно взять записи за один и тот же день недели за предыдущие X дней недели. Должен быть лучший способ сделать это, чем этот:

Transaction.find_by_sql "выбрать * из транзакций, в которых EXTRACT (DOW от даты) = 1 и organisation_id = 4 ордер по дате desc limit 7"

Это дает мне то, что мне нужно, но специфично для Postgres и не очень "Rails-y". Дата является меткой времени. Кто-нибудь получил предложения?

Ответы [ 2 ]

1 голос
/ 29 марта 2010

Сколько дней вы хотите вернуться?

Я написал гем под названием by_star , в котором есть динамический искатель, подходящий для поиска определенного количества дней в прошлом. Если число дней всегда было числом, вы можете использовать этот искатель:

Transaction.as_of_3_days_ago

Если бы он был динамическим, я бы порекомендовал использовать что-то вроде future или between, в зависимости от того, есть ли у вас транзакции в будущем (например, путешествие во времени):

Transaction.future(params[:start_date].to_time)
Transaction.between(params[:start_date].to_time, Time.now)
0 голосов
/ 29 марта 2010

AFAIK Rails не имеет никаких способов сделать это другим способом. Лучшее и быстрое решение - создайте индекс DOW для столбца даты и используйте свой запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...