Как мне сохранить строку UTF-8 в модели с Postgresql?
Я не понимаю поведение консоли при выполнении чего-то вроде этого:
User.first.first_name
=> "ᚠᛇᚻ᛫ᛒᛦᚦ᛫ᚠᚱᚩᚠᚢᚱ᛫ᚠᛁᚱᚪ᛫ᚷᛖᚻᚹᛦᛚᚳᚢᛗ"
User.first.first_name.encoding
=> #<Encoding:UTF-8>
дает именно то, чтоЯ хочу, но:
"ᚠᛇᚻ᛫ᛒᛦᚦ᛫ᚠᚱᚩᚠᚢᚱ᛫ᚠᛁᚱᚪ᛫ᚷᛖᚻᚹᛦᛚᚳᚢᛗ"
=> ""
"ᚠᛇᚻ᛫ᛒᛦᚦ᛫ᚠᚱᚩᚠᚢᚱ᛫ᚠᛁᚱᚪ᛫ᚷᛖᚻᚹᛦᛚᚳᚢᛗ".encoding
=> #<Encoding:UTF-8>
Обе строки имеют одинаковую кодировку, но я не могу отобразить ее во втором примере (она выдает пустую строку), даже если оба объекта имеют одинаковую кодировку.
Это означает, что если я хочу сделать что-то вроде:
User.first.update(first_name: "ᚠᛇᚻ᛫ᛒᛦᚦ᛫ᚠᚱᚩᚠᚢᚱ᛫ᚠᛁᚱᚪ᛫ᚷᛖᚻᚹᛦᛚᚳᚢᛗ")
=> true
, то это удастся, но first_name
будет установлена в пустую строку вместо той, которую я хочу.
В консоли psql будет работать следующий оператор и задавать правильные данные:
UPDATE users SET first_name = 'ᚠᛇᚻ᛫ᛒᛦᚦ᛫ᚠᚱᚩᚠᚢᚱ᛫ᚠᛁᚱᚪ᛫ᚷᛖᚻᚹᛦᛚᚳᚢᛗ'
Как мне перейти к установке имени пользователя в строку UTF8 с помощью ruby?