我有一个图书 ID 数组,我需要对每个图书 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 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!