と の 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の方法はありますか?
ありがとう