【发布时间】:2020-11-20 14:28:37
【问题描述】:
在最近的更改中,我将列 first_name 和 last_name 合并为一个 full_name。我进行了迁移,并且在我的 schema.rb 上一切都是最新的。我的用户工厂现在看起来像这样:
FactoryBot.define do
password = Faker::Internet.password
factory :user do
email { Faker::Internet.email }
full_name { Faker::Name.name }
password { password }
password_confirmation { password }
owner { 1 }
registration_step { :finished }
confirmed_at { Time.current }
end
end
但是,当我尝试运行我的 rspec 时,我得到重复的错误:
Failure/Error: let(:user) { create :user } NoMethodError: undefined method `full_name=' for #<User:0x00007ff5e597e310>
此外,运行 RAILS_ENV=test rake db:migrate 会以某种方式将我的 schema.db 重写为之前的状态,其中 first_name 和 last_name 仍然存在而不是 full_name。这些列不再存在于我的迁移文件中!
FactoryBot/rspec 如何仍然能够加载我的旧版本架构以及如何解决此问题?
注意我使用了 rails db:drop db:create db:migrate 但它没有修复它。
【问题讨论】:
标签: ruby-on-rails rspec factory-bot ruby-on-rails-6