我有两个 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")
这有两个问题:
- 原始 SQL。无论如何用DSL写这个?
- 这仅返回属性
vote_count
而不是“*”+ vote_count。我可以追加.select("*")
,但我每次都会重复。有没有更好/干燥的方法来做到这一点?
谢谢