加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 工厂女孩 – 有许多协会

发布时间:2020-12-17 04:05:17 所属栏目:百科 来源:网络整理
导读:我正在使用工厂女孩与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.passwor
我正在使用工厂女孩与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看到很多示例工厂

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读