Электронная почта с шифрованием Rails 7 + Devise (ОШИБКА)

Я использую гем 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?

Большое спасибо.

Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Начала с розового дизайна
Начала с розового дизайна
Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских...
Шлюз в PHP
Шлюз в PHP
API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
0
0
102
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, это должно помочь с вашей ошибкой https://github.com/heartcombo/devise/issues/5436#issuecomment-1014152052

Есть 2 подхода, вы можете установить:

config.active_record.encryption.support_unencrypted_data = true

или изменить миграцию для поля электронной почты:

null: false, default: ""

Другие вопросы по теме