I have these models that I'm trying to create factories for using factory_girl.
class Foo < ActiveRecord::Base
belongs_to :baz
end
class Baz < ActiveRecord::Base
has_many :foos
end
I'm not sure how to create the factories without creating a loop where the factories endlessly call each other.
Factory.define :foo do |f|
f.after_create do |ff|
ff.baz = Factory(:baz)
end
end
Factory.define :baz do |f|
f.after_create do |ff|
ff.foos = [Factory.create(:foo)]
end
end
I realize I can just leave out ff.foos = [Factory.create(:foo)]
in the baz
factory, but then in my baz
tests I'm forced to used foo.baz
instead of just using baz
. Am I forced to use the baz
object by fetching it out of a foo
factory in my tests? Or is there a better way?
See the Associations section of the Getting Started guide
So, you need to use that syntax from that section, ie. in your Foo
declaration you need:
Factory.define :foo do |f|
f.association :baz
end
No after_create
needed for a belongs_to
association.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With