class ValorInseridoEqualsValorOrcadoValidator < ActiveModel::EachValidator
	def validate_each(record, attribute, valor)
		total_orcado = record.send(options[:associacao]).inject(0) do |total, objeto|
			orcamentos = objeto.send(options[:orcamento]) || []
			total + orcamentos.map { |orcamento| orcamento[options[:valor]] }.compact.sum.to_f
		end
		if (valor != total_orcado)
			record.errors[attribute] << (options[:mensagem] || 'valor inserido não corresponde ao valor total orçado')
		end
	end
end
