计算红宝石中真实元素的百分比

时间:2015-02-18 16:14:14

标签: ruby-on-rails ruby boolean percentage

class Constituency < ActiveRecord::Base
    has_many :votes
end

class Vote <ActiveRecord::Base
    belongs_to :constituency
end

我有一个投票数据库,每个投票都有布尔属性“valid_vote”。 我想知道每个选区有多少票(百分比),但只计算有效票数。所以100%是所有投票,其中valid_vote == true。 任何想法我应该怎么写呢?

2 个答案:

答案 0 :(得分:3)

要获得所有投票的有效投票百分比:

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

答案 1 :(得分:2)

您可以使用以下单个SQL查询执行此操作:

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