match.rb
728 Bytes
class Match < ApplicationRecord
belongs_to :pool, inverse_of: :matches
has_many :bets, dependent: :destroy, inverse_of: :match
validates :visit, :local, :date, :pool, presence: true
enum result: [:visit, :tie, :local]
scope :active, -> { joins(:pool).where(pools: { active: true}) }
scope :upcoming, -> { active.where('date > ?', Time.zone.now) }
before_save :calculate
after_save :calculate_bets
def calculate
return unless score_local && score_visit
self.result = find_result
end
def find_result
return :tie if score_local == score_visit
return :local if score_local > score_visit
:visit
end
def calculate_bets
return unless result
bets.each(&:calculate)
end
end