我正在使用工厂女孩与rspec,这是我有的:
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,:group => @group2) @permission_user_3 = Factory.create(:permission,:group => @group3) end .......
问题是组模型有一个user_id字段,它不是由工厂设置的.如何创建用户,然后让工厂代表该用户创建组.喜欢@ user1.group.factory.create(:group)?
有任何想法吗?谢谢
解决方法
不要为所有用户执行此操作,而是创建从用户工厂继承的另一个工厂.
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看到很多示例工厂
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。