gpt4 book ai didi

ruby-on-rails - FactoryGirl 与多个模型的复杂关联

转载 作者:行者123 更新时间:2023-12-04 14:31:19 25 4
gpt4 key购买 nike

我试图弄清楚如何编写属于 2 个不同模型的工厂,每个模型都应该具有相同的父模型。这是人为的示例代码:

class User < ActiveRecord::Base
has_many :widgets
has_many :suppliers

attr_accessible :username
end

class Widget < ActiveRecord::Base
belongs_to :user
has_many :parts

attr_accessible :name
end

class Supplier < ActiveRecord::Base
belongs_to :user
has_many :parts

attr_accessible :name
end

class Part < ActiveRecord::Base
belongs_to :supplier
belongs_to :widget

attr_accessible :name
end

这是我到目前为止所拥有的:
factory :user do
name 'foo'
end

factory :widget do
association :user
name 'widget'
end

factory :supplier do
association :user
name 'supplier'
end

factory :part do
association :widget
association :supplier
name 'part'
end

问题在于 part.widget.user != part.supplier.user它们必须相同。

我尝试了以下方法但没有成功:
factory :part do
association :widget
association :supplier, user: widget.user
name 'part'
end

有什么建议?还是必须在创建零件后对其进行修改?

谢谢

最佳答案

我相信你可以用 callback 做到这一点:

factory :part do
association :widget
association :supplier
name 'part'
after(:create) do |part|
user = FactoryGirl.create(:user)
part.widget.user = part.supplier.user = user
end
end

另见: Get two associations within a Factory to share another association

关于ruby-on-rails - FactoryGirl 与多个模型的复杂关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13041924/

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