【发布时间】:2017-07-19 20:23:12
【问题描述】:
我正在开发一款纸牌游戏应用。每张卡都存储在一个表(卡)中,并具有一定数量的点数。如果用户赢得一张卡,他将获得这张卡的积分。在这种情况下,user_card 表中保存了一条记录,其中包含card_id、user_id 和success = true(如果他丢失了卡,则为success = false)。
card.rb
class Card < ActiveRecord::Base
has_many :user_cards
has_many :users, through: :user_cards
end
user_card.rb
class UserCard < ActiveRecord::Base
belongs_to :user
belongs_to :card
end
我现在要做的是创建一个排行榜。因此我需要:
- 按 user_id 对所有成功 = true 的 user_card 进行分组
- 对用户成功的 user_cards 的所有积分(存储在卡表中)求和
- 显示用户名(来自用户表)和该用户的总分
我尝试了一些方法,例如 group_by(&:something)、joins 等。但是,我无法让它发挥作用。当我必须对单个表中的内容进行分组和汇总时,我没有问题。但是,我不知道如何从一个表中获取用户名,并根据 user_card 表从另一个表中获取积分。
我怎样才能做到这一点?
【问题讨论】:
标签: ruby-on-rails ruby activerecord