counter_culture
has_manyの数を数えるやつ(投稿に対してのコメント数とか)、馬鹿正直にクエリ(って言うんだっけ)を投げると処理に時間がかかる。いい方法ないかなと思ったら、counter_cacheってのがあるらしい。
Rails order by results count of has_many association - Stack Overflow
Active Record Associations — Ruby on Rails Guides
でもこのcounter_cache、ぐぐってみると、デッドロックとかいうのが出たりとかするらしい。
で、そこら辺をうまくやるのがcouter_cultureってやつらしい。
件数のキャッシュをcounter_cacheじゃなくてcounter_cultureで - リア充爆発日記
Railsのcounter_cacheを使ったらdeadlockが頻発した - Qiita
なんかカウントに不整合が出たりするって書いてあったりするけど、そこら辺は僕よりもっと頭のいい人がうまく解説してくれると思います。
joinsとmerge
参考にしたリンクだけ
ActiveRecord4でこんなSQLクエリどう書くの? Merge編 - TIM Labs
Rails で十分に活用されていなくてもったいない ActiveRecord::Relation のメソッド TOP 10 - 杉風呂2.0 - A Lifelog -
Rails - ActiveRecord で merge メソッドの引数に order メソッドを含んだ Relation を渡すと ORDER BY のテーブルが変わってしまう - Qiita
Rails - mergeメソッド使ってます? - Qiita