我有一個模型'用戶',可以有多個'遊樂設施'(has_many:遊樂設施)。乘坐的表看起來像這樣:Rails的範圍,其中groupby計數
# Table name: rides
#
# id :integer not null, primary key
# user_id :integer
# title :text
# description :text
我想創建一個名爲「is_multiple_ride」的換乘模式,它返回具有擁有多個遊樂設施供使用者騎乘一個範圍。查詢是不同的幾乎是相反的(:USER_ID)
我所創建的範圍如下:
scope :multiple_live_listings, -> {
where(user_id: Ride.group(:user_id).having("COUNT(user_id) > 1").pluck(:user_id))
}
此範圍工作然而,隨着多個連鎖範圍使用時,它的效率不高,因爲它是查詢乘車的整個乘車表格(爲了抽取ID,然後在範圍查詢中使用它們),而不是僅檢查當前查詢中的乘車。
如果有更有效的方法來做到這一點,請幫助!我正在使用PostgreSQL 9.3.5和Rails 3.2.2,歡呼!
測試我的db,Rails 4.1只創建一個子查詢,如果你省略'pluck' - 像你一樣添加'pluck',給我兩個單獨的查詢。這是否有助於提高效率?如果不是,那麼你究竟在詢問什麼問題,以查看緩慢/低效的結果? – eirikir