Хорошо, любое из вышеперечисленных решений будет работать отлично, если у вас есть столбец upvotes
в вашей таблице posts
, однако, если он есть в отдельной таблице, что в идеале должно быть, вам понадобится что-то вроде ниже длято же самое:
query = <<-QUERY
SELECT posts.*,
Count(upvotes.*) AS upvotes_count
FROM posts
LEFT JOIN upvotes
ON upvotes.post_id = posts.id
WHERE Date(posts.created_at) = #{Date.today}
GROUP BY posts.id
ORDER BY upvotes_count DESC
QUERY
ActiveRecord::Base.connection.execute(query).entries
Это с сырым SQL, хотя. Вы можете преобразовать его в ActiveRecord, если вам нужно.