Skip to content

Instantly share code, notes, and snippets.

@jdar
Created September 7, 2009 18:39
Show Gist options
  • Save jdar/182509 to your computer and use it in GitHub Desktop.
Save jdar/182509 to your computer and use it in GitHub Desktop.
class AddElectricOpToVehicleModels < ActiveRecord::Migration
def self.up
test = VehicleModel.find(:first)
if test.attributes["electric_percent"] != nil
down
end
add_column :vehicle_models, :electric_percent, :float, :default => 0
# for each of the base fuel drivetrains: adv.ci, adv.si, fc.hev
["ci","si","fc"].each do |dt|
dt_like = dt + ".phev%"
cars = Drivetrain.find(:all,:conditions=>"name like '#{dt_like}'").map(&:vehicle_models).flatten
drivetrain = Drivetrain.find_by_name case dt
when "fc"; "fc.hev"
else; "adv."+dt
end
puts dt_like , " "
puts "cars.length: ", cars.length, "\n"
# Now we have to look up each id, save off pertinent information
# and find the analogs with PHEV behavior.
cars.each do |car| ## cars are phevs!
baseVeh = drivetrain.vehicle_models.find_by_year_and_power_percent_and_vehicle_class(car.year,car.power_percent, car.vehicle_class)
eVal = 1-(baseVeh.avg_mpg.to_f/car.avg_mpg.to_f)
car.update_attribute(:electric_percent,eVal.to_f)
end
end
end
def self.down
remove_column :vehicle_models, :electric_percent
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment