制作宝石循环依赖

时间:2015-06-19 16:44:48

标签: ruby-on-rails ruby rails-activerecord cyclic-reference fabrication-gem

使用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)时,我会得到循环依赖,因为制作消息会构造新用户,制造新用户会为他制作消息等等。我怎么能避免这个恶魔般的圈子?

1 个答案:

答案 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将自动保存消息。它将处理设置正确的引用。

相关问题