Вот есть у меня такой хешик hash["price"] = 5 000.
Как мне применить к значению хеша .lstrip?
Мне нужно, чтобы он пробел обрезал между пятеркой и нулями, ибо у меня при загрузке через csv он в поле price:integer загружает только цифры перед пробелом.
Уточните тогда, на каком этапе вы видите 5000 как "5 000"? .sub не работает, потому что у вас число, а не строка в хэше. Значит, как я понимаю, вы куда-то эти данные отдаёте, а они там начинают отображаться как строка "5 000"?
5 000 у меня в файле csv, который я импортирую. Если я не применяю метод .sub, то при сохранении в таблице Product price:integer у меня сохраняет просто 5.
Значит, всё дело в row.to_hash. Он банально берёт "5 000" из csv, применяет .to_i, и получает 5. Если у вас есть доступ к нему - надо в этом методе откопать приведение и там делать .sub. Если нету - нужно править csv.
Я сейчас проверил. Если я ставлю 5 000 в столбец title, который string, то он потом сохраняет те же 5 000. Я думаю, это все происходит после row.to_hash на этапе сохранения. Именно там он преобразует число до типа поля price:integer.
Тут и необходимо каким-то образом повлиять на значение ключа хеша price.
Файл править не могу, он каждый раз должен будет выгружаться из 1С. Около тысячи наименований для синхронизации.
При доступе в to_hash - подправлять его, чтобы он для полей с типом :integer делал исходному значению sub от всех пробелов.
При отсутствии доступа в .to_hash - перед ним брать csv-строку как текст и в ней править колонку (к сожалению, пример кода сейчас не напишу).
После .to_hash править уже особо нечего, потому что для руби "5 000".to_i и "5 000000".to_i одинаково равны 5 и количество нулей не угадать.