Сейф Rails и слепой индекс, невозможно получить доступ к зашифрованному полю

У меня установлены драгоценные камни Lockbox v1.3.3 / слепой индекс v2.3.2 (нужно использовать эту версию, в данный момент невозможно обновить).

Я использую рельсы 6.0.3.2 и рубин 2.6.9.

Я выполнил следующие шаги:

Когда я удаляю столбец обычного текста, я больше не могу получить доступ к полю электронной почты с помощью User.last.email, говорится в нем.

undefined method `email' for #<User:0x0000000125f46340>

Я ожидаю, что смогу получить доступ к этому полю.

Вот как выглядит моя пользовательская модель:

  ...
  has_encrypted :email, migrating: true
  blind_index :email, migrating: true

  # removing this after dropping the column does not change anything, email is still not acessible
  self.ignored_columns = ["email"]
  ...

Первоначальная миграция:

class AddEncryptionToPiiFields < ActiveRecord::Migration[6.0]
  def change
    # users encrypted fields
    add_column :users, :email_ciphertext, :text

    # users blind columns and indexes
    add_column :users, :email_bidx, :string
    add_index :users, :email_bidx, unique: true
  end
end

У меня есть существующие данные, поэтому после первой миграции я запустил Lockbox.migrate(User). Как только это будет завершено, я удаляю столбцы с помощью следующей миграции:

class DropNonEncryptedFields < ActiveRecord::Migration[6.0]
  def change
    remove_column :users, :email
  end
end

После этого я больше не могу получить доступ User.last.email.

Что мне не хватает? Почему я больше не могу получить доступ к полю email?

Кажется, в БД есть все «зашифрованные» поля, и я могу получить к ним доступ User.last.email_ciphertext.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Решение было простым: просто удалите «migrating: true» из всех зашифрованных полей модели.

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