Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 按子属性值之和排序模型_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails 按子属性值之和排序模型

Ruby on rails 按子属性值之和排序模型,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我有团队,团队有多个成员资格。每个会员都有积分。我想根据这些会员积分的总和来订购团队 例如: 团队很棒| 10分 团队良好| 8分 因为: 团队真棒 成员1,积分:5 成员2,积分:5 团队良好: 成员1,积分:5 成员2,分:3 但我似乎找不到解决方案。我没有足够的声誉发表评论。所以我在这里指定我的观点。这是团队数据及其成员数据在同一个表中还是团队数据在一个表中,成员数据在另一个表中。您使用的是哪个数据库。如果是MySQL或Oracle,您可以使用聚合函数和CASE语句其次是通过命令来

我有团队,团队有多个成员资格。每个会员都有积分。我想根据这些会员积分的总和来订购团队

例如:

团队很棒| 10分

团队良好| 8分

因为:

团队真棒

  • 成员1,积分:5
  • 成员2,积分:5
团队良好:

  • 成员1,积分:5
  • 成员2,分:3

但我似乎找不到解决方案。

我没有足够的声誉发表评论。所以我在这里指定我的观点。这是团队数据及其成员数据在同一个表中还是团队数据在一个表中,成员数据在另一个表中。您使用的是哪个数据库。如果是MySQL或Oracle,您可以使用聚合函数和CASE语句其次是通过命令来解决这个问题

您可以使用这样的查询(如果您使用的是MySQl数据库)

在team.rb中 内部控制器 在视图中(示例)

= 10 %>

在哪里订购?正在观看?在查询中?您想要分组和顺序还是只需要顺序?在视图中,在“只想要顺序”中,我设法显示分组的点,但不按它们进行排序。这正是您所需要的。数据的模式是什么?您能给出一些示例代码让我们看看吗?成员资格是属于团队的一个表。团队是一个有许多成员的表。点是成员身份的一个属性。@user3562152根据您的需要编辑了答案。如果您不需要团队表中的任何属性,可以省略连接条件
SELECT t.team_id,t.team_name,sum(t1.points) as sum_of_points,
 case  
 when sum(t1.points)=10 then "Awsome"
 when sum(t1.points)=8  then "good"
 else "default"
 end as credit 
from team t join team_membership t1 on(t.team_id=t1.team_id) 
group by t1.team_id order by sum_of_points desc
has_many :memberships

def total_points
  self.memberships.sum(:points)
end
@teams = Team.all.sort_by {|team| team.total_points }.reverse
<% @teams.each do |team| %>
  <tr>
    <td><%= team.total_points %></td>
    <% if team.total_points >= 10 %>
     <td><%= "awesome" %></td>
    <% else %>
     <td><%= "good" %></td>
    <% end %>
  </tr>
<% end %>