Ошибка возникает, потому что @privatekey
переменная экземпляра имеет тип String
и не имеет private_encrypt
метода.
Это строка, потому что в методе create_verification_keys
вы делаете следующее:
self.private_key = keypair.to_s
self.public_key = keypair.public_key.to_s
to_s
здесь явно преобразует объект в строку, и это нормально, потому что база данных ожидает, хранит и возвращает простую строку (в данном случае), а не сложный объект.
Чтобы это исправить, сначала нужно создать экземпляр правильного типа.Если вы используете openssl gem, вероятно, это должно быть примерно так:
rsa = OpenSSL::PKey::RSA.new(@privatekey)
rsa.private_encrypt($hash)
Ссылка на документацию здесь .