所以,我有一个工厂,生产一个有几个关联的用户。我想创建对象并修改关联对象的一些属性,而不是为每种情况创建一个新工厂。
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
的更新属性。
我错过了什么?感谢。
答案 0 :(得分:2)
一些建议......
首先,您似乎正在反对 FactoryGirl的力量。更好的方法恕我直言将您的自定义代码移动到工厂,例如为您正在构建的任何内容定义FactoryGirl工厂。
示例:
let(:user){ FactoryGirl.create(:user_with_time_now) }
这真是FactoryGirl恕我直言的重点。
其次,如果您正在使用Rails和ActiveRecord,请查看:inverse_of表示关联。这些告诉ActiveRecord关联应该循环回原始对象。