Class: BStats::PlayerBattingStat

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/bstats/player_batting_stat.rb

Class Method Summary collapse

Class Method Details

.calculate_batting_average(hits, at_bats) ⇒ Object



39
40
41
# File 'lib/bstats/player_batting_stat.rb', line 39

def self.calculate_batting_average(hits, at_bats)
  [0, "0", ""].include?(at_bats) ? 0 : (hits.to_f / at_bats.to_f).round(3)
end

.calculate_slugging_percentage(hits, doubles, triples, home_runs, at_bats) ⇒ Object



43
44
45
# File 'lib/bstats/player_batting_stat.rb', line 43

def self.calculate_slugging_percentage(hits, doubles, triples, home_runs, at_bats)
  [0, "0", ""].include?(at_bats) ? 0 : (((hits - doubles - triples - home_runs) + (2 * doubles) + (3 * triples) + (4 * home_runs)).to_f / at_bats).round(3)
end

.import_csv(file) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/bstats/player_batting_stat.rb', line 11

def self.import_csv(file)
  begin
    CSV.foreach(file, headers: true) do |row|
      stat = PlayerBattingStat.new()
      stat.external_id = row['playerID'].to_s
      stat.year = row['yearID'].to_s
      stat.league = row['league'].to_s
      stat.team_id = row['teamID'].to_s
      stat.games = row['G'].to_i
      stat.at_bats = row['AB'].to_i
      stat.runs = row['R'].to_i
      stat.hits = row['H'].to_i
      stat.doubles = row['2B'].to_i
      stat.triples = row['3B'].to_i
      stat.home_runs = row['HR'].to_i
      stat.runs_batted_in = row['RBI'].to_i
      stat.stolen_bases = row['SB'].to_i
      stat.caught_stealing = row['CS'].to_i
      stat.batting_average = self.calculate_batting_average(stat.hits, stat.at_bats)
      stat.slugging_percentage = self.calculate_slugging_percentage(stat.hits, stat.doubles, stat.triples, stat.home_runs, stat.at_bats)
      stat.save
    end
  rescue CSV::MalformedCSVError => e
    # certain csv's have file endings that the CSV library doesn't like. Windows may or may not have something to do with that
    # TODO: log file ending failure
  end
end