使用fabrication
gem时,我有一个循环依赖。在这里,我会告诉你我做了什么。我们假设我有两个模型:
class User < AR::Base
has_many :messages
class Message < AR::Base
belongs_to :user
因此,他们的制造商将是:
Fabricator(:user) do
# bla-bla-bla
messages(count: 5)
end
Fabricator(:message) do
# bla-bla-bla
user
end
似乎没事,是吗?但是当我运行Fabricate(:user)
或Fabricate(:message)
时,我会得到循环依赖,因为制作消息会构造新用户,制造新用户会为他制作消息等等。我怎么能避免这个恶魔般的圈子?
答案 0 :(得分:2)
在这样的实例中,我通常会有两个user
制造商。
Fabricator(:user)
Fabricator(:user_with_messages, from: :user) do
messages(count: 5)
end
你可以选择这样做来制作你的作品。
Fabricator(:user) do
messages(count: 5) { Fabricate.build(:message, user: nil) }
end
保存用户时,AR将自动保存消息。它将处理设置正确的引用。