Я застрял при приведении Float к Integer в функции ниже - она никогда не доходит до v.to_int
(извините, я новичок в Ruby, и это код обезьяны). Проблема, которую я пытаюсь решить, - это данные, поступающие из MongoDB, которые должны иметь тип Integer, но иногда во входном потоке присутствуют числа с плавающей запятой (см. Ниже).
Чего я пытаюсь достичь - когда Integer ожидал на определенной позиции - приведение и усечение к Integer, что бы там ни было (обычно Float).
def transform_primitive(v, type=nil)
case v
when BSON::ObjectId, Symbol
v.to_s
when BSON::Binary
if type.downcase == 'uuid'
v.data.to_s.unpack("H*").first
else
Sequel::SQL::Blob.new(v.data.to_s)
end
when Mongo::DBRef
v.id.to_s
when Integer
v.to_int
else
v
end
end
ввод выглядит следующим образом, поэтому последнее значение 150.0
ожидается равным 150
[ "EUR", 20]
[ "EUR", 30]
[ "EUR", 450]
[ "EUR", 22]
[ "EUR", 150.0]
Используется Ruby 2.7 MongoDB 3.4 Исходная библиотека (Mo SQL) не мое, репо здесь