我有一个书ID的数组,我需要对其进行迭代,并将每个书的评论数保存在一个哈希中(@book_comments),该哈希将把book_id作为键,并将该书的评论数作为值。书中有很多评论,评论属于书。
@book_ids.map {|id| @book_comments[id] = Book.find(id).comments.size}
这将通过这两个查询命中数据库,以获取我在阵列上拥有的ID数量。
SELECT `books`.* FROM `books` WHERE `books`.`id` = ? LIMIT 1
SELECT COUNT(*) FROM `comments` WHERE `comments`.`book_id` = ?
当然,有更好的方法。如果您知道,请教我。谢谢你。
这应该得到您的哈希值:
@book_comments = Comment.where(book_id: @book_ids).group(:book_id).count
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句