Bre*_*eno 2 ruby mysql activerecord ruby-on-rails
我有一系列的书ID,我需要迭代每个并在Hash(@book_comments)中保存每个的评论数量,这些评论将book_id作为关键字,并将该书的评论数量作为值.书中有很多评论,评论属于书籍.
@book_ids.map {|id| @book_comments[id] = Book.find(id).comments.size}
Run Code Online (Sandbox Code Playgroud)
这将使用这两个查询命中数据库,以查找我的数组上的ID数量.
SELECT `books`.* FROM `books` WHERE `books`.`id` = ? LIMIT 1
SELECT COUNT(*) FROM `comments` WHERE `comments`.`book_id` = ?
Run Code Online (Sandbox Code Playgroud)
当然有更好的方法.如果你知道,请教我.谢谢.
这应该得到你的哈希:
@book_comments = Comment.where(book_id: @book_ids).group(:book_id).count
Run Code Online (Sandbox Code Playgroud)