2017-05-26 54 views
-1

我是比较新的Rails(Rails 4)。 所以我有一个表talent_media,它具有talent_idmedia_id属性。Rails加入并计数

同样的media_id会出现很多次。 Kanye(talent_id)可能会喜欢20首不同的歌曲(media_id),并且每个歌曲都在它自己的行中。 我也有一个Media表,有不同的行。 我需要根据media_id行找到排名前100位的talent_media条目,并将其与基于media.id行的Media表加入。因此,本质上,我得到talent_media表中最受欢迎的歌曲,然后加入它们以返回Media表中的实际媒体信息。

我希望这是有道理的。

回答

0

您可以查询您的TalentMedia模型得到的结果..

@top_100 = TalentMedia.includes(:media).select(:media_id).order('count(talent_id) desc').group(:media_id).limit(100) 

然后,您可以显示每个人的遍历它像,

@top_100.each do |topper| 
    topper.media.name 
end 
+0

嗯,这似乎不工作: 'Mysql2 ::错误:'where子句'中的未知列'media.talent_medium_id':SELECT'media'。* FROM'media' WHERE'media'.'talent_medium_id' IN('')):' – Niineswiss

+0

ohh,可能错过了一些东西,你可以发布它生成的sql查询吗?使用'.to_sql'' TalentMedia.includes(:media).select(:media_id).order('count(talent_id)desc')。group(:media_id).to_sql' –