[英]Rails 3 complex query with sort
我有一個User
模型和一個Event
模型。 用戶has_many events
。 我想要做的是找到在過去24小時內創建events
最多的用戶。
理想情況下,輸出格式應為[{User => [Event, Event, ...]}]
哈希數組,該數組將按具有最高events.count
User排序。
謝謝
這對我有用,但可能需要根據您的數據庫進行調整。
class User
scope :by_most_events, -> {
joins(:events)
.select("users.*, count(events.id) as event_count")
.where(events: { created_at: 24.hours.ago..Time.now })
.group("users.id, events.id") # this is for postgres (required group for aggregate)
.order("event_count desc")
}
end
### usage
User.by_most_events.limit(1).first.event_count
# => 123
正如Sixty4Bit所述,您應該使用counter_cache
,但在這種情況下將無法滿足要求,因為您需要查詢最近24小時內創建的事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.