tapajos / brazilian-rails

Brazilian Rails é um conjunto de gems para serem usadas com Ruby e com o Ruby on Rails e tem como objetivo unir alguns recursos úteis para os desenvolvedores brasileiros.
http://brazilian-rails.rubyforge.org
361 stars 100 forks source link

brDinheiro - Retornar sempre objeto do tipo Dinheiro #28

Closed dreoliv closed 12 years ago

dreoliv commented 12 years ago

Depois que foi feito o merge do Pull Request #27, passei a ter um comportamento diferente do esperado ao utilizar o usar_como_dinheiro. Antes da atualização, ao recuperar um valor de um objeto ActiveRecord, este valor sempre era um objeto da classe Dinheiro. Após a atualização, passou a ser um BigDecimal. Segue a simulação no console:

Estou usando o seguinte model:

class Grana < ActiveRecord::Base
  usar_como_dinheiro :valor
end

Antes do merge (versão 3.0.4)

1.9.3p0 :001 > g = Grana.new
 => #<Grana id: nil, valor: nil, created_at: nil, updated_at: nil> 
1.9.3p0 :002 > g.valor = 10.reais
 => 10,00 
1.9.3p0 :003 > g.valor
 => 10,00 
1.9.3p0 :003 > g.valor.class
 => Dinheiro

Depois do merge(versão 3.0.5)

1.9.3p0 :001 > g = Grana.new
 => #<Grana id: nil, valor: nil, created_at: nil, updated_at: nil> 
1.9.3p0 :002 > g.valor = 10.reais
 => 10,00 
1.9.3p0 :003 > g.valor
 => #<BigDecimal:7f91db79a490,'0.1E2',9(18)> 

Estou fazendo novo pull request, com uma alteração para que o retorno do valor seja sempre um objeto do tipo Dinheiro (ou nil), como funcionava na versão 3.0.4.

tinogomes commented 12 years ago

Feito na versão 3.0.7, valeu!