因此,我有一个工厂可以生成具有多个关联的用户。我不想为每个案例创建一个新工厂,而是想创建对象并修改关联对象的一些属性。
let(:user) do
user = FactoryGirl.create(:user_with_associations)
user.associations.where(some_id: user.default_thing.id).first.some_attribute = Time.now
user.save
user
end
但是如果我调用 puts user.associations.to_yaml
在it
block ,它没有 some_attribute = Time.now
的更新属性.
我错过了什么?谢谢。
一些建议...
首先,你似乎在对抗 FactoryGirl 的力量。恕我直言,更好的方法是将您的自定义代码移到工厂中,例如为您正在构建的任何内容定义一个 FactoryGirl 工厂。
例子:
let(:user){ FactoryGirl.create(:user_with_time_now) }
恕我直言,这确实是 FactoryGirl 的重点。
其次,如果您使用的是 Rails 和 ActiveRecord,请查看 :inverse_of 以了解关联。这些告诉 ActiveRecord 关联应该循环回到原始对象。
我是一名优秀的程序员,十分优秀!