У меня есть модель, и в этой модели я создаю более сложное поле, чем раньше. Я сериализовал хэши и массивы, но это поле является результатом Gibberish :: RSA.generate_keypair (https://github.com/mdp/gibberish). На мой взгляд, это более или менее пара закрытых / открытых ключей в оболочке ruby.
Работая из командной строки, я могу выполнить update_attributes, и результат генерации будет сохранен в текстовом поле. При выполнении rake db: seed или создании экземпляра это не работает, я получаю строку yaml, которая указывает на несколько типов объектов Gibberish.
Как мне сделать более сложную сериализацию активной записи помимо хешей и массивов? Или как мне лучше понять, что я пытаюсь сделать?
Код:
def generate_keypair
self.update_attributes(:rsakey => Gibberish::RSA.generate_keypair(1024) )
end
, который я призываю к созданию связанной модели, базовый вызов оболочки Гиббериш
Тогда вывод я получу для поля myresource.rsakey
"--- !ruby/object:Gibberish::RSA::KeyPair\nkey:
!ruby/object:OpenSSL::PKey::RSA {}\ncipher:
!ruby/object:OpenSSL::Cipher::Cipher {}\n"
Обновление атрибутов работает из командной строки rails, но не при заполнении или создании. Другие способы, которыми я пытался добавить сериализацию, полностью разрушили процесс или созданные экземпляры.
РЕДАКТИРОВАТЬ: решается прямо, просто вызывая to_s в результате метода генерации пары ключей, который просто сохраняет его как текстовое поле, которое «работает на данный момент», пока оно не должно стать более элегантным.