簡體   English   中英

Rails 3復雜查詢排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM