All pastes #935972 Raw Edit

Untitled

public text v1 · immutable
·published 2008-03-10 01:06 UTC
rendered paste body
class UseIntegerMathForMoney < ActiveRecord::Migration
  def self.up
    add_column "donations", :reported_required_fee_dollars, :int
    add_column "donations", :reported_required_fee_cents, :int
    Donation.find(:all).each do |p|
      amt = p.reported_required_fee.divmod(1)
      p.update_attribute :reported_required_fee_dollars, amt[0]
      p.update_attribute :reported_required_fee_cents, ((amt[1]*100).divmod(1)[0])
    end
    remove_column "donations", :reported_required_fee

    add_column "donations", :reported_suggested_fee_dollars, :int
    add_column "donations", :reported_suggested_fee_cents, :int
    Donation.find(:all).each do |p|
      amt = p.reported_suggested_fee.divmod(1)
      p.update_attribute :reported_suggested_fee_dollars, amt[0]
      p.update_attribute :reported_suggested_fee_cents, ((amt[1]*100).divmod(1)[0])
    end
    remove_column "donations", :reported_suggested_fee
  end

  def self.down
    add_column "donations", :reported_required_fee, :decimal, :precision => 10, :scale => 2, :default => 0.0
    Donation.find(:all).each do |p|
      p.update_attribute :reported_required_fee, (p.reported_required_fee_dollars + (p.reported_required_fee_cents / 100.0))
    end
    remove_column "donations", :reported_required_fee_dollars
    remove_column "donations", :reported_required_fee_cents

    add_column "donations", :reported_suggested_fee, :decimal, :precision => 10, :scale => 2, :default => 0.0
    Donation.find(:all).each do |p|
      p.update_attribute :reported_suggested_fee, (p.reported_suggested_fee_dollars + (p.reported_suggested_fee_cents / 100.0))
    end
    remove_column "donations", :reported_suggested_fee_dollars
    remove_column "donations", :reported_suggested_fee_cents
  end
end