计算 ruby 中真实元素的百分比

Counting percentage of true elements in ruby

class Constituency < ActiveRecord::Base
    has_many :votes
end

class Vote <ActiveRecord::Base
    belongs_to :constituency
end

我有一个包含选票的数据库,每张选票都有布尔属性 "valid_vote"。 我想得到的选票在每个选区有多少(百分比),但只计算有效选票。所以 100% 是所有投票,其中 valid_vote == true。 有什么想法我应该怎么写吗?

获取所有有效票数占所有票数的百分比运行:

all_votes_count = constituency.votes.count
valid_votes_count = constituency.votes.where(valid_vote: true).count
if all_votes_count > 0
  percent = valid_notes_count / all_votes_count
else
  puts "no votes"
end

您可以像这样使用单个 SQL 查询来完成此操作:

h = votes.group(:valid_vote).count
percentage = 100.0 * h[true] / h.values.sum rescue 0