Я использую гем Rails 7 + Devise. Я пытаюсь зашифровать поле электронной почты (сгенерированное устройством). Я успешно сделал rails db:encryption:init и установил свои учетные данные.
Модель пользователя:
class User < ApplicationRecord
encrypts :email, deterministic: true, downcase: true
validates :email, presence: true
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable, :confirmable
end
Когда я пытаюсь посетить оба пути входа и регистрации, я получаю следующие ошибки:
ActiveRecord::Encryption::Errors::Decryption in Devise::Sessions#new
ActiveRecord::Encryption::Errors::Decryption in Devise::Registrations#new
Оба указывают на эту строку в представлении:
<%= f.input :email,
Даже когда я пытаюсь создать нового пользователя через консоль rails, я получаю:
unexpected token at '' (JSON::ParserError)
ActiveRecord::Encryption::Errors::Encoding (ActiveRecord::Encryption::Errors::Encoding)
ActiveRecord::Encryption::Errors::Decryption (ActiveRecord::Encryption::Errors::Decryption)
Как я могу это решить? Доступно ли новое шифрование Rails 7 ActiveRecord с Devise?
Большое спасибо.
Похоже, это должно помочь с вашей ошибкой https://github.com/heartcombo/devise/issues/5436#issuecomment-1014152052
Есть 2 подхода, вы можете установить:
config.active_record.encryption.support_unencrypted_data = true
или изменить миграцию для поля электронной почты:
null: false, default: ""