【问题标题】:In Rails 6 / FactoryBot 6, how do I simulate attr_encrypted attributes?在 Rails 6 / FactoryBot 6 中,如何模拟 attr_encrypted 属性?
【发布时间】:2021-12-09 18:09:47
【问题描述】:

最近升级到 Rails 6 和 FactoryBot 6.2.0。我有这个模型

class Store < 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 #<Store:0x00007feec319fbe0>

不确定 Rails 或 FactoryBot 发生了什么变化,但在我之前没有定义这样的方法的情况下,这可以正常工作。无论如何,这似乎是一种黑客行为。有没有更优雅的方式在工厂中定义这个属性?

【问题讨论】:

    标签: ruby-on-rails factory-bot ruby-on-rails-6 attr-encrypted


    【解决方案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
    

    解决了问题(工厂正常创建了对象的实例)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      • 2018-11-18
      • 2021-10-22
      相关资源
      最近更新 更多