Como usar o Dinheiro em seu ActiveRecord?

  • Arquivo 001_create_lancamentos.rb:

    class CreateLancamentos < ActiveRecord::Migration
    def self.up
      create_table :lancamentos do |t|
        t.column :descricao,   :string,    :null => false
        t.column :valor,       :decimal,   :precision => 14, :scale => 2
        t.column :mensalidade, :decimal,   :precision => 14, :scale => 2
      end
    end
    
    def self.down
      drop_table :lancamentos
    end
    end
    
  • Arquivo lancamento.rb:

    class Lancamento < ActiveRecord::Base
    usar_como_dinheiro :valor, :mensalidade
    end
    
  • No console (script/console):

    Loading development environment.
    >> lancamento = Lancamento.new
    => #<Lancamento:0x9652cd8 @attributes={"descricao"=>nil,
                                         "valor"=>#<BigDecimal:9657008,'0.0',4(4)>,
                                         "mensalidade"=>#<BigDecimal:9656e8c,'0.0',4(4)>},
                            @new_record=true>
    >> lancamento.valor = 100
    => 100
    >> lancamento.valor
    => #<Dinheiro:0x9650f3c @quantia=10000>
    >> lancamento.valor.real
    => "R$ 100,00"
    >> lancamento.valor = 100.50
    => 100.5
    >> lancamento.valor.real
    => "R$ 100,50"
    >> lancamento.valor = "250.50"
    => "250.50"
    >> lancamento.valor.real
    => "R$ 250,50"
    >> lancamento.valor = 354.58.reais
    => #<Dinheiro:0x9646384 @quantia=35458>
    >> lancamento.valor.real
    => "R$ 354,58"
    >> exit