【问题标题】:Fabrication gem cyclic dependency制造宝石循环依赖
【发布时间】:2015-06-19 16:44:47
【问题描述】:

在使用fabrication gem 时,我有一个循环依赖。在这里,我将向您展示我所做的。假设我有 2 个模型:

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

【问题讨论】:

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


    【解决方案1】:

    在这样的实例中,我通常会有两个 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 会自动保存消息。它将处理设置正确的引用。

    【讨论】:

    • 好的,谢谢!第二种方法对我来说是新的。我接受答案,但也许其他人提供更好的东西?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 2013-12-10
    相关资源
    最近更新 更多