У меня есть схема с отзывами для моего веб-сайта.
create_table "reviews", force: :cascade do |t|
t.integer "stars"
t.string "title"
t.string "content"
t.integer "turtle_id"
t.integer "user_id"
end
Я пытаюсь написать scope_method, который возвращает user_id
с наибольшим количеством отзывов. Я понимаю, что должен написать запрос sql, который подсчитывает несколько экземпляров user_id
, а затем возвращает user_id
. Но я потерян при этом.
Это то, что у меня есть до сих пор.
scope :most_reviews, -> {
where("select count(*) c from reviews group by user_id order by c desc limit 1")
}
Затем я вызываю его с моего контроллера так:
def index
@most_reviewed = Review.most_reviews
puts @most_reviewed
end
Как я могу правильно написать этот scope_method, чтобы вернуть user_id
в обзорах с наибольшим количеством обзоров (в других случаях)? Также это должен быть scope_method.