0
我簡化Rails應用程序看起來像這樣導軌通過模型對嵌套的has_many 3.1複雜的find_by_sql查詢
# chapter.rb
has_many :sections
has_many :videos, through: :sections
# section.rb
belongs_to :chapter
has_many :videos
# video.rb
belongs_to :section
has_many :votes
# vote.rb
belongs_to :video
我想要做的就是找到頂級的5當前熱門影片對於給定章,這意味着通過它在上個月內收到的票數排序視頻(顯然,限制爲5個結果)。
我想在我的章節模型中編寫popular_videos
方法,我認爲這需要find_by_sql
查詢,對吧?但是我不知道寫足夠的sql來寫這個查詢。
投票表有一個created_at
列,我使用postgres作爲我的數據庫。任何幫助是極大的讚賞。
感謝您的回答,但我也需要查詢來省略投票數超過一個月的投票 –
在實際的表結構中再次猜測,我添加了一行限制上個月的投票。 – kgrittn
非常棒!謝謝。我還有一個問題。我使用的是Postgre 9.0,我想從視頻表中選擇所有列而不是名稱和ID,因此我將第一行更改爲'SELECT *,count(*)作爲vote_count',但隨後它一直給我有關GROUP BY行的錯誤。我是否需要將視頻表中的每一列添加到此行,還是有更好的方法來做到這一點? –