我有一个属于组的用户模型。组必须具有唯一的名称属性。用户工厂和组工厂已定义为:
Factory.define :user do |f|
f.association :group, :factory => :group
# ...
end
Factory.define :group do |f|
f.name "default"
end
当创建第一个用户时,也会创建一个新组。当我尝试创建第二个用户时,它会失败,因为它想要再次创建相同的组。有没有办法告诉factory_girl关联方法首先查找现有记录?
注意:我确实尝试过定义一个处理此问题的方法,但然后我无法使用f.association。我希望能够像这样在Cucumber场景中使用它:
Given the following user exists:
| Email | Group |
| test@email.com | Name: mygroup |
只有在工厂定义中使用关联时,才能使此方法起作用。
Group.find_or_create_by(name: name)
的方式。 - miguGroup.where(name: name).first_or_create
。 - Laurenscreate(:user)
2.Group.first.update_attributes(name: "new name")
3.create(:user)
。现在Group.first.name == "name"
成立,步骤3重置了步骤2。在复杂的Cucumber设置中,这种情况很容易发生。对此有什么建议吗? - Sebastian vom Meerfind_or_initialize_by
,这样它就能与FactoryGirl的build
一起使用。 - Kelvinnil
:Model.where(name: name).first_or_initialize(attributes)
。 - Hari Gopal