You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails中仅对布尔值为true的记录求和指定列的实现方法

修改代码统计已完成挑战的积分

你可以通过在查询中添加过滤条件,只统计accomplished为true的挑战的xp积分,具体修改方式如下:

直接添加过滤条件

@points = current_user.challenges.where(accomplished: true).sum(:xp)

复用性更高的方式(定义Scope)

如果项目中需要多次筛选已完成的挑战,可以在Challenge模型里定义一个scope来简化代码:

# app/models/challenge.rb
scope :accomplished, -> { where(accomplished: true) }

之后就能用更简洁的写法统计积分:

@points = current_user.challenges.accomplished.sum(:xp)

两种方式的核心逻辑一致:先筛选出accomplished字段为true的挑战记录,再对这些记录的xp字段求和计算。

内容的提问来源于stack exchange,提问作者spacerobot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:42:09