I've got a cyclic dependency when worked with fabrication
gem. Here I'll show you what I've did. Let's suppose I have 2 models:
class User < AR::Base
has_many :messages
class Message < AR::Base
belongs_to :user
So, the fabricators for them will be:
Fabricator(:user) do
# bla-bla-bla
messages(count: 5)
end
Fabricator(:message) do
# bla-bla-bla
user
end
It seems all right, yeah? But when I run Fabricate(:user)
or Fabricate(:message)
I get cyclic dependencies, because of fabricating of message fabricates new user, fabricating new user fabricates a messages for him and so on. How can I avoid this diabolic circle?
I would typically have two
user
fabricators in an instance like this.You could alternatively do this to make what you have work.
The messages will be saved automatically by AR when the user is saved. It will handle setting up the correct references.