#ruby-on-rails #factory-bot #ruby-on-rails-6 #attr-encrypted
#рубин на рельсах #завод-бот #рубин на рельсах-6 #attr-зашифровано
Вопрос:
Недавно обновлен до Rails 6 и FactoryBot 6.2.0. У меня есть эта модель
class Store lt; ApplicationRecord … attr_encrypted :ein_number, key: APP_CONFIG[:app_encryption][::Rails.env][‘secret_key’]
У меня есть соответствующая фабрика
FactoryBot.define do factory :store do name { "Test Store” } … ein_number { "00-0000000" }
Но теперь, когда я иду и создаю экземпляр этой фабрики, я получаю ошибку
Failure/Error: @store = create :store NoMethodError: undefined method `encrypted_ein_number_iv' for #lt;Store:0x00007feec319fbe0gt;
Не уверен, что изменилось в Rails или FactoryBot, но раньше это работало без моего определения такого метода. В любом случае, это похоже на взлом. Есть ли более элегантный способ определить этот атрибут на фабрике?
Ответ №1:
Любопытно, что обновление моего attr_encryptor на моей модели до
attr_encrypted :ein_number, key: APP_CONFIG[:cfs_encryption][::Rails.env]['secret_key'], algorithm: 'aes-256-cbc', mode: :single_iv_and_salt, insecure_mode: true
решена проблема (фабрика создала экземпляр объекта в обычном режиме).