根据另一个列属性订购 table

order a table based on another column attribute

好的,所以在我的 rails 项目中,我有这些模型:poolsmembershipsweek_scores

has_many :memberships
会员资格 has_many :week_scores
WeekScore 也有一个属性 week:integer 告诉它是星期几。这样我就知道 table 是第 1 周还是第 6 周,等等
WeekScore 有一个属性 score:integer,我在其中保存每个用户的分数。这让我觉得我应该将我的模型名称更改为 week_points...

无论如何,我想向我展示 table 池中的成员,这些成员按他们在某个 week_score 中获得的分数排序。

澄清一下

我现在获得 ceratin 周分数的方法是 member_score = member.week_scores.find_by(周: 5).score
//成员是池中的成员

例如,

假设是第 5 周,

我想显示池中每个成员第 5 周的分数,按分数降序排列,

  1. 大卫.... 30分
  2. 约翰..... 28分
  3. 乔什..... 28分
  4. 麦克....... 21分
    ...等等

实现此目标我需要什么查询?我试过加入,但它不会工作,但我是新手,所以我很确定这很容易做到,我太新了,不知道。

另外..我想阅读更多关于数据库和 sql 的 rails 的内容,以便我对此更加熟悉。有人愿意推荐一本书吗?

week5 = Pool.first.memberships.includes(:week_scores)
       .where(:week_scores => {week: 5}).order('week_scores.score DESC')

week5.each do |membership|
  puts "#{membership.member_name}: #{membership.week_scores.first.score}"
end