Open brunofrank opened 9 years ago
Fiz um gato aqui que resolveu meu problema, se alguém se interessar!
module DinheiroActiveModel#:nodoc:
def self.included(base)#:nodoc:
base.extend ClassMethods
end
module ClassMethods#:nodoc:
def usar_como_dinheiro(*args)#:nodoc:
unless args.size.zero?
args.each do |name|
name = name.to_s
module_eval <<-ADICIONANDO_METODO
validate :#{name}_valido?
def #{name}_valido?
begin
@#{name}.to_s.reais
rescue Exception => e
self.errors.add('#{name}', e.message)
end
end
def #{name}=(value)
if value.nil?
@#{name} = nil
elsif value.kind_of?(Dinheiro)
@#{name} = value.valor_decimal
else
begin
@#{name} = value.reais.valor_decimal
rescue
@#{name} = value
end
end
end
def #{name}
@#{name}.reais if @#{name}
end
ADICIONANDO_METODO
end
end
end
end
end
Estou tentando usar o BRDinheiro em uma classe que não extende de ActiveRecord, porém recebo um erro
ruby undefined method
composed_of' for AccountTransfer:Class`, alguém tem alguma ideia se é possível?