无法使用factory girl和rspec更新关联对象的属性

时间:2012-12-21 05:32:57

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

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

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的更新属性。

我错过了什么?感谢。

1 个答案:

答案 0 :(得分:2)

一些建议......

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

示例:

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

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

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

相关问题