FactoryGirl不会重置新列名称

时间:2012-03-26 23:34:59

标签: ruby-on-rails rspec factory-bot

我已经更改了数据库中列的名称并相应地更改了spec/factories.rb,但是当我运行rspec测试时,它仍然在尝试使用旧的列名。我重新启动了Ruby on Rails服务器,但这并没有解决它。

# Changed :height to :height_feet
# Added :height_inches


FactoryGirl.define do
  factory :user do
    ...
    height 180
  end
end

# Changed to:

FactoryGirl.define do
  factory :user do
    ...
    height_feet 5
    height_inches 11
  end
end

然而,当我在rspec spec/models运行以下行时:

let(:user) { FactoryGirl.create(:user) }

产生以下错误:

Failure/Error: let(:user) { FactoryGirl.create(:user) }
NoMethodError:
   undefined method `height' for #<User:0x0000000532fc08>

关于我如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:1)

这是你需要重启的spork服务器。我不使用后卫,所以我不完全确定如何,但看看这个问题,还有其他一些有用的信息:

Spork: how to refresh validations and other code?

答案 1 :(得分:1)

我通过从FactoryGirl 1.4.0升级到FactoryGirl 2.0.0解决了这个问题。从故障排除链接:

https://github.com/sporkrb/spork/wiki/Spork.trap_method-Jujitsu

  

Factory Girl 2没有以前版本的自动加载问题,因此您无需执行任何操作即可使Spork正常工作。