Passing single attributes to associated factories
- by lambdabutz
I'm looking for a way to pass fields into the factories of associated models without having to explicitly call the factory itself.
For example, lets say I have some factories like so:
Factory.define :person do |person|
person.name "Default Bob"
person.sex "M"
person.house {|p| p.association(:house)}
end
Factory.define :house do |house|
house.color "Red"
house.has_ac true
house.suburb {|h| h.association(:suburb)}
end
Factory.define :suburb do |suburb|
suburb.name "Little boxes"
end
This is fine and all, but if I want to use factories to create someone in a specific house in a specific suburb I have do this:
sub = Factory(:suburb, :name => "Blue town")
house = Factory(:house, :color => "Blue", :suburb => sub)
person = Factory(:person, :name => "Bill", :house => house)
While this isn't bad in this small case, my actual models sometimes have 7 or 8 associations, and when I want to create an object whose associations I only care about a single attribute, the code for this starts to get really heavy. Is there somewhat I can pass attributes to nested Factories without having to recall the Factory itself?