gpt4 book ai didi

ruby-on-rails - factory_girl (4.2.0) 多对多关系

转载 作者:行者123 更新时间:2023-12-01 10:52:15 25 4
gpt4 key购买 nike

我想使用 FactoryGirl 4.2.0 正确建立一个多对多工厂集。我不断遇到将以前 FactoryGirl 版本的过时语法混合在一起的文档/示例,但它对我不起作用。

在给定以下两个资源及其链接表的情况下,如何设置此场景:

class User < ActiveRecord::Base
has_many :user_registrations
has_many :registrations, through: :user_registrations
end

class UserRegistration < ActiveRecord::Base
belongs_to :user
belongs_to :registration
end

class Registration < ActiveRecord::Base
has_many :user_registrations
has_many :users, through: :user_registrations
end

根据文档,这是我目前所拥有的 found here .这是我迄今为止取得任何真正进展的最接近结果。

FactoryGirl.define do

factory :registration do
user
end

factory :user, class: User do
sequence(:email) { |n| "foo#{n}@example.com" }
password "password"

factory :user_with_registrations do

ignore do
registrations_count 1
end

after(:create) do |user, evaluator|
registrations FactoryGirl.create_list(:registration, evaluator.registrations_count, user: user)
end
end
end
end

以下方式失败,我意识到这是因为此设置被声明为一对多关系。

1) User Login Success
Failure/Error: user = FactoryGirl.create(:user_with_registrations)
NoMethodError:
undefined method `user=' for #<Registration:0x007fc48e2ca768>
# ./spec/factories.rb:18:in `block (4 levels) in <top (required)>'

使用最新的 FactoryGirl 语法为多对多场景定义工厂集的正确方法是什么? (4.2.0)

谢谢!

最佳答案

对我来说,您似乎必须通过 UserRegistrationsRegistrationsUsers 创建 has_many 关联。这看起来像

    factory :user_registration do
association :user
association :registration
end

factory :user do
..setup for email and password

factory :user_with_registrations do

ignore do
registrations_count 1
end

after(:create) do |user, evaluator|
FactoryGirl.create_list(:user_registration, evaluator.registrations_count, user: user)
end
end
end

factory :registration do
..setup for registration

factory :registration_with_user do

ignore do
users_count 1
end

after(:create) do |registration, evaluator|
FactoryGirl.create_list(:user_registration, evaluator.users_count, registration: registration)
end
end
end

关于ruby-on-rails - factory_girl (4.2.0) 多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17663409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com