dnestoff
9/9/2016 - 2:24 AM

Ruby: CSV manipulation

Module used to select specific keys from a CSV file before seeding to database.

WORD_LIST_FILENAME = "db/fixtures/word_list.txt"

Word.delete_all

File.foreach(WORD_LIST_FILENAME) do |line|
  Word.create!(word_text: line.chomp)
end
SunlightLegislatorsImporter.import
require 'csv'

module SunlightLegislatorsImporter
  def self.import(filename = File.dirname(__FILE__) + "/../db/data/legislators.csv")

    CSV.foreach(filename, { :headers => true, :header_converters => :symbol}) do |row|
      legislator_data = row.to_hash
      legislator_data[:birthdate] = Date.strptime(legislator_data[:birthdate], '%m/%d/%Y')
      unwanted_keys = [:nickname, :congress_office, :bioguide_id, :votesmart_id, :govtrack_id, :crp_id, :fec_id, :congresspedia_url, :youtube_url, :facebook_id, :official_rss, :senate_class]
      # removing all unwanted keys
      unwanted_keys.each {|key| legislator_data.delete(key)}

      new_legislator = Legislator.new(legislator_data)
      new_legislator.save

    end

  end
end