2015-04-27 56 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天前創建的記錄,而不是7天前的6天,而不是9天。

我該如何使其發現記錄恰好在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子句或在聚合中使用函數 LINE 1:... human_logins_count「= 5 GROUP BY humans.id HAVING human_logi ... –

+0

結帳更新回答 –

+0

ActiveRecord :: StatementInvalid:PG :: GroupingError:錯誤:列」humans.id「必須出現在GROUP BY子句或用於集合函數 LINE 1:SELECT「humans」。* FROM「humans」INNER JOIN「human_logins」ON ... –

0

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

+0

不幸: –