【发布时间】:2019-08-28 15:11:40
【问题描述】:
我有一个 FactoryBot 工厂在升级到 Rails 6 后出错。错误是:
Failure/Error: let(:lodge) { FactoryBot.create(:lodge) }
ActiveModel::MissingAttributeError:
can't write unknown attribute `checklist`
Checklist 是Lodge 上的上传器(Carrierwave),通过模型安装,具有字段和checklist_cache 的允许参数。
我已经运行了db:test:prepare,并且该字段存在于测试数据库中(Lodge.checklist是一个字符串)。
有问题的工厂:
FactoryBot.define do
factory :lodge do
name { Faker::Name.first_name }
number { Faker::Number.number(digits: 3) }
designator { Faker::Lorem.characters(number: 1) }
combined { "999A" }
status { "active" }
association :council
checklist { Rack::Test::UploadedFile.new(Rails.root.join('spec/support/lodge-checklist.pdf'), 'application/pdf') }
end
end
无论我是否有清单行,错误仍然存在。
红宝石 2.6.3; Rails 6.0.0、Carrierwave 2.0.0(也出现在 master 分支上)
【问题讨论】:
-
进一步研究:仅当上传器安装在该模型中包含的关注点中时才会发生这种情况。如果直接在模型RB文件中调用上传器,则运行干净。
标签: carrierwave rspec-rails ruby-on-rails-6