Ruby on rails FactoryGirl属于\u关联并验证\u是否存在\u失败-外键已关联,对象未关联

Ruby on rails FactoryGirl属于\u关联并验证\u是否存在\u失败-外键已关联,对象未关联,ruby-on-rails,rspec,associations,factory-bot,belongs-to,Ruby On Rails,Rspec,Associations,Factory Bot,Belongs To,从FactoryGirl 2.5.2升级到4.5.0后,属于关联的验证失败 两个模型文件: class User < ActiveRecord::Base ... has_many :things ... end class Thing < ActiveRecord::Base ... belongs_to :user validates_presence_of :user ... end 创建一个新的对象总是会失败,因为必须提供用户。当

从FactoryGirl 2.5.2升级到4.5.0后,
属于
关联的验证失败

两个模型文件:

class User < ActiveRecord::Base    
  ...
  has_many :things
  ...
end

class Thing < ActiveRecord::Base
  ...
  belongs_to :user   
  validates_presence_of :user
  ...
end
创建一个新的
对象
总是会失败,因为必须提供
用户
。当我进入代码时,问题是外键设置正确,但关联的对象似乎为nil

>> user = create(:user)
  ( returns saved "user" object )
>> user.id
1
>> thing = build(:thing, user: user)
  ( returns new "thing" object )
>> thing.valid?
false
>> thing.user_id
1
>> User.find(1).present?
true
>> thing.user
nil
我试过各种各样的组合和变化。我已经尝试在(:build)块之后使用
来设置用户,并使用不同的FactoryGirl语法。我试着用一个普通的
用户来代替关联。但问题总是归结到这个问题上——有一个关联的键,它是正确的,但没有关联的对象(即使该对象存在并已保存)

环境:

ruby 2.1.5

factory_girl 4.5.0
factory_girl_rails 4.5.0
rails 4.2.0
rspec 3.1.0

您需要定义一个用户工厂。如果您已经这样做了,请编辑您的答案以显示它。

由:
>user=create(:user)(返回保存的“user”对象)暗示。
我看到了同样的情况。看起来我的after(:build)块甚至没有被触发——好像它在进入这些回调之前验证失败了。你那边还有什么进展吗?我注意到一个问题:“必须提供用户”实际上是从另一个工厂还没有完工的型号上发射的。假设您简化了您的示例,以便您可能希望检查任何关联模型是否也需要用户……我认为
factory\u girl
的这一部分是一条红鲱鱼——但至少它使我们更容易关注到底发生了什么。根本问题似乎与Rails 4.2本身有关。
ruby 2.1.5

factory_girl 4.5.0
factory_girl_rails 4.5.0
rails 4.2.0
rspec 3.1.0