工厂女工-有许多关联 [英] Factory Girl - has many associations
本文介绍了工厂女工-有许多关联的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用带有rspec的工厂女孩,这是我拥有的:
I'm using factory girl with rspec, here is what I have:
factories.rb
Factory.define :user do |f|
f.sequence(:fname) { |n| "fname#{n}" }
f.sequence(:lname) { |n| "lname#{n}" }
f.sequence(:email) { |n| "email#{n}@google.com" }
f.password "password"
f.password_confirmation { |u| u.password }
f.invitation_code "xxxxxxx"
end
Factory.define :group do |f|
f.sequence(:name) { |n| "myGroup#{n}" }
f.sequence(:private_email) { |n| "myGroup#{n}" }
end
Factory.define :permission do |f|
f.role_id 1
end
groups_controller_spec.rb
describe GroupsController do
include Devise::TestHelpers
before (:each) do
@user1 = Factory.create(:user)
@user1.confirm!
sign_in @user1
@group = Factory.create(:group)
@group2 = Factory.create(:group)
@group3 = Factory.create(:group)
@permission_user_1 = Factory.create(:permission, :user => @user1, :creator_id => @user1.id, :group => @group)
@permission_user_2 = Factory.create(:permission, :user => @user1, :creator_id => @user1.id, :group => @group2)
@permission_user_3 = Factory.create(:permission, :user => @user1, :creator_id => @user1.id, :group => @group3)
end
.......
问题是组模型中有一个user_id字段,该字段未由工厂设置.如何创建用户,然后让工厂代表该用户创建组.像@ user1.group.factory.create(:group)吗?
Problem is the group model has a field for user_id which is not being set by factory. How can I create a users, and then have factory create a group on behalf of that user. Like @user1.group.factory.create(:group)?
有什么想法吗?谢谢
推荐答案
不要为所有用户执行此操作,而是创建另一个从用户工厂继承的工厂.
Don't do this for all users instead create another factory that inherits from the user factory.
Factory.define :user_with_group, :parent => :user do |u|
u.groups { |g| [ g.association(:group),
g.association(:group)
]}
end
您可以在 https://github.com/上看到很多示例工厂. drhenner/ror_ecommerce/tree/master/spec/factories
这篇关于工厂女工-有许多关联的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文