Подсчет количества ассоциаций между несколькими объектами Rails - PullRequest
1 голос
/ 29 сентября 2011
class Article
  has_many :comments
end

class Comment
  belongs_to :article
end

Я бы хотел определить, сколько всего комментариев существует для определенных статей. Например: статьи №20, №21 и №22 содержат в общей сложности X комментариев.

Любые указатели были бы великолепны!

Ответы [ 3 ]

2 голосов
/ 29 сентября 2011

Я предлагаю следующее:

Comment.where(:article_id => [20, 21, 22]).count

Выполнение подсчета и т. Д. В базе данных и все в одном запросе (что в данном случае будет делать ActiveRecord) примерно настолько эффективен, насколько это возможно.

0 голосов
/ 29 сентября 2011

Вы можете легко сделать это без кэша счетчика, если хотите.

Article.where(:id => [20,21,22]).joins(:comments).count
0 голосов
/ 29 сентября 2011

Вы можете добавить counter_cache к вашей articles таблице

class Article
  has_many :comments, :counter_cache => true
end

и добавить столбец comments_count к вашей таблице articles.

(http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html) изатем сложите это так:

Article.where(:id => [20,21,22]).sum(:comments_count)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...