2017-04-18 345 views
0

的最後一個孩子的領域尋找和我有嵌套模型,如(使用PostgreSQL的)Rails的,嵌套的has_many協會,各

class User 
    has_many :pages 
end 

class Page 
    has_many :details 
    belongs_to :user 
end 

class Detail 
    belongs_to :page 
    #It has a column named "count" 
end 

我需要的是說 用戶使用id = 1,它有很多的網頁與ids = 1,2,3。這些帶有ID(1,2,3)的頁面有很多細節。 我需要的是讓每個頁面的最新細節,並從這些最新的細節

我在現在做什麼名爲「計數」字段的總和

page_ids = current_user.pages.pluck(:id) 
last_followers = Detail.select("DISTINCT ON(page_id) *").where(page_id: page_ids).order("page_id, created_at DESC") 
last_followers.each { |detail| last_sum += detail.counts } 

但事實並非如此看起來不錯,找到page_ids,而不是細節,並循環遍歷所有這些。

有沒有像單一的查詢直接的方式,感謝

回答

0

不能完全確定你所求的,但這裏有一個嘗試:

sum = current_user.pages.map { |page| page.details.last.counts }.sum 
+0

謝謝,那是我所需要的總和。 但是你的查詢將要做的是,如果用戶說20頁而不是打到數據庫20次,我想避免。 –