Rails, как заказать запрос суммы столбца? - PullRequest
0 голосов
/ 18 апреля 2019

Я хочу рейтинговую презентацию. Рекомендовать модель имеет пользователя и количество.

rank / user_name / recommend_count 
1 / A / 4 
2 / B / 2  
3 / C / 1

код

  @top_recommenders = Array.new
  recommends = Recommend.group(:user_id).order("sum_count DESC").limit(10).sum(:count)
  recommends.each do |recommend|
    recommend = Recommend.where(user_id: recommend[0]).first
    recommend.count = recommend[1]
    @top_recommenders << recommend
  end

схема

create_table "recommends", force: :cascade do |t|
    t.integer "user_id"
    t.integer "recommender_id"
    t.integer "count"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["recommender_id"], name: "index_recommends_on_recommender_id"
  end

Это сработало, но не идеально. Как запросить группу по 'пользователю' и порядку 'sum_count'?

1 Ответ

0 голосов
/ 18 апреля 2019
@top_recommenders =  Recommend.select('recommends.*,SUM(count) as count_total').group(:user_id).order("count_total DESC").limit(10)

Сумма счета будет сохранена в результате запроса как count_total.Если вам нужно сохранить его по мере подсчета рекомендованных объектов, сопоставьте его, как показано ниже.

@top_recommenders.map { |r| r.count = r.count_total }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...