2015-04-27 2 views
0

У меня есть следующий фрагмент кода:created_at проблемы дата синтаксиса

humans = user.humans.joins(:human_logins).where(human_logins_count: 10).group('humans.id').having('MAX(human_logins.created_at) >= ?', Date.today() - schedule.value.day) 

Проблема с этим является created_at) >= ? сегмент, как будто моя дата равна 7 дней назад, он будет найти записи, которые были сделаны в последние 7 дней, в отличие от поиска записей, которые были созданы буквально 7 дней назад, а не 6, а не 9, ровно 7 дней назад.

Как я могу сделать так, чтобы его поисковые записи были созданы ровно 7 дней назад? Я думал использовать что-то вроде ("? <= created_at AND created_at <= ?", schedule.value.days.ago.beginning_of_day, schedule.value.days.ago.end_of_day), но я не уверен, как использовать его в этом сценарии.

ответ

1

Как об этом,

.group('human_logins.created_at').having('human_logins.created_at = ?', Date.today() - 7) 
+0

ActiveRecord :: StatementInvalid: PG :: GroupingError: ОШИБКА: колонка "human_logins.created_at" должен появиться в GROUP BY оговорки или использоваться в совокупности function LINE 1: ... human_logins_count "= 5 GROUP BY people.id HAVING human_logi ... –

+0

checkout обновленный ответ –

+0

ActiveRecord :: StatementInvalid: PG :: GroupingError: ERROR: столбец« people.id »должен появиться в GROUP BY или использоваться в совокупной функции LINE 1: SELECT «люди». * FROM «people» INNER JOIN «human_logins» ON ... –

0

.having(created_at: schedule.value.days.ago.beginning_of_day.. schedule.value.days.ago.end_of_day)

+0

Не повезло :(спасибо, хотя –

Смежные вопросы