と の 2 つの ActiveRecord モデルがPostありVoteます。簡単なクエリを作成したい:
SELECT *,
(SELECT COUNT(*)
FROM votes
WHERE votes.id = posts.id) AS vote_count
FROM posts
activerecord DSL でそれを行う最良の方法は何だろうと思っています。私の目標は、記述しなければならない SQL の量を最小限に抑えることです。
できますPost.select("COUNT(*) from votes where votes.id = posts.id as vote_count")
これには2つの問題があります:
- 生の SQL。とにかくこれを DSL で書くには?
- これは属性のみ
vote_countを返し、"*" + vote_count は返しません。追加できます.select("*")が、毎回これを繰り返します。これを行うためのはるかに優れた/DRYの方法はありますか?
ありがとう