gauge/app/models/conflict_coefficient.rb

34 lines
664 B
Ruby

class ConflictCoefficient
attr_reader :left, :right
def self.all
Talk.find(:all, from: :halfnarp_friendly).map(&:id).combination(2).map do |talks|
ConflictCoefficient.new talks.first, talks.last
end
end
def conflicts
@conflicts ||= talk_preferences.select do |talk_preference|
talk_preference.include_all? [@left, @right]
end.count
end
def total_votes
talk_preferences.count
end
def initialize(left, right)
@left, @right = left, right
end
def per_cent
Rational(100 * conflicts, total_votes).to_f
end
private
def talk_preferences
@talk_preferences ||= TalkPreference.this_years
end
end