2

所以,我有一个工厂生产一个有几个关联的用户。我不想为每种情况创建一个新工厂,而是创建对象并修改关联对象的一些属性。

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块,它没有更新的属性some_attribute = Time.now

我错过了什么?谢谢。

4

1 回答 1

2

几个建议...

首先,你似乎在对抗FactoryGirl 的力量。恕我直言,更好的方法是将您的自定义代码移动到工厂中,例如为您正在构建的任何内容定义一个 FactoryGirl 工厂。

例子:

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

这真的是 FactoryGirl 恕我直言的重点。

其次,如果您使用 Rails 和 ActiveRecord,请查看 :inverse_of 的关联。这些告诉 ActiveRecord 关联应该循环回原始对象。

于 2012-12-21T07:16:31.987 回答